composer報錯Class 'XXXX' not found

今天用rabbitmq異步優化接口時,由於當前項目沒有php-amqp擴展包,所以將另一個項目裏的整個包複製過來,結果運行後報如下錯誤:

<p>Type: Error</p>
	<p>Message: Class 'PhpAmqpLib\Connection\AMQPStreamConnection' not found</p>
	<p>Filename: /Users/why/Desktop/ymt/hangqing-ditu/phplib/libraries/Lib_amqp.php</p>
	<p>Line Number: 35</p>

當時一臉懵比,然後用diff對比兩個項目裏的vender目錄,發現在autoload_psr4.php文件中有一處不同:

當前有問題的項目:

<?php

// autoload_psr4.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    'PHPMailer\\PHPMailer\\' => array($vendorDir . '/phpmailer/phpmailer/src'),
);

另一個沒問題的項目:

<?php

// autoload_psr4.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    'PHPMailer\\PHPMailer\\' => array($vendorDir . '/phpmailer/phpmailer/src'),
    'PhpAmqpLib\\' => array($vendorDir . '/php-amqplib/php-amqplib/PhpAmqpLib'),
);

可以很明顯地發現由於是手動複製的,不是通過composer安裝的,所以並沒有在psr4文件中添加擴展的映射,果不其然,加上之後完美解決。

 

看來composer還是不夠熟悉,只知道composer require xxx之後直接用,需要了解一下它的原理。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章