问题
我正在尝试使用PayPal Checkout REST SDK,它需要通过composer自动加载PayPal库。我已经完成了在CodeIgniter 3中启用Composer的步骤,但当我转到自动加载PayPalRestApiContext
类的控制器时,我会收到以下错误:
致命错误:在中找不到类"PayPal\Rest\ApiContext"C: \examplep\htdocs\php\toucan talk\App\modules\paypal\controllers\paypal.php在线15
到目前为止我有什么
这是我的composer.json文件
{
"require": {
"paypal/rest-api-sdk-php" : "*"
}
}
我已经在config.php文件中设置了$config['composer_autoload'] = TRUE;
。
这是我的控制器
<?php
use PayPalRestApiContext;
class Paypal extends MX_Controller
{
public function __construct()
{
$api = new ApiContext(
);
var_dump($api);
}
}
问题
如何对composer及其自动加载器进行故障排除,以便确定自动加载过程失败的位置。
这里是解决方案:在config.php中,而不是设置。。。
$config['composer_autoload'] = TRUE;
你需要放置
$config['composer_autoload'] = FCPATH . 'vendor/autoload.php';
然而,我仍然不确定为什么这与原始文件的建议相反。真的有点头疼。
我知道这是一个很老的问题,但我仍然想输入,基本上CodeIgniter 3特别是3.1.6在进行时存在问题
$config['composer_autload'] = TRUE:
那么它就不起作用,也不会从供应商文件夹自动加载文件,现在有两种可能的解决方案,"Jethro Hazelhurst"已经提到了这个解决方案。
另一个简单的解决方案是将composer.json复制到应用程序文件夹中,然后从应用程序文件夹运行composer install,或者将供应商文件夹与composer.json和composer.lock一起移动到应用程序文件夹,然后这个TRUE值将正常工作。
谢谢。
您可以在命令提示符中使用composer dump自动加载。这将重新生成要包含在项目中的文件列表。
对于其他可能有此问题的人。Codeigniter 3在应用程序中有第三方文件夹,用于放置供应商目录(供应商目录包含库(。
composer.json(/comporter.json(
告诉composer使用第三方文件夹中的供应商目录来存储库
"config": {
"vendor-dir": "application/third_party/vendor"
},
config.php(/application/config/config.php(
告诉Codeigniter 3从第三方/供应商文件夹自动加载所有库
$config['composer_autoload'] = APPPATH . 'third_party/vendor/autoload.php';
PS:如果存在许多依赖项和流量适中到过大的网站,则在每次请求时自动加载所有库可能会导致网站运行缓慢。如果是这种情况,则根据需要加载库。