问题
我正在尝试使用PayPal Checkout REST SDK,它需要PayPal库通过composer自动加载。我已经完成了在CodeIgniter 3中启用Composer的步骤,但是当我转到我的自动加载PayPal\Rest\ApiContext
类的控制器时,我收到以下错误:
致命错误:未找到类'PayPal \ Rest \ ApiContext' C:\ XAMPP \ htdocs中\ PHP \巨嘴通话\ APP \模块\贝宝\控制器\ Paypal.php 在第15行
到目前为止我有什么
这是我的composer.json文件
{
"require": {
"paypal/rest-api-sdk-php" : "*"
}
}
我在config.php文件中设置了$config['composer_autoload'] = TRUE;
。
这是我的控制器
<?php
use PayPal\Rest\ApiContext;
class Paypal extends MX_Controller
{
public function __construct()
{
$api = new ApiContext(
);
var_dump($api);
}
}
问题
如何对composer及其自动加载器进行故障排除,以便确定自动加载进程失败的位置。
答案 0 :(得分:10)
这里的解决方案是:在config.php而不是设置...
$config['composer_autoload'] = TRUE;
你需要把
$config['composer_autoload'] = FCPATH . 'vendor/autoload.php';
然而,我仍然不确定为什么这与原始文件建议相反。有点头疼。
答案 1 :(得分:2)
我知道这是一个相当古老的问题但是,我仍然想把我的输入基本上CodeIgniter 3特别是3.1.6有问题,当你做
$config['composer_autload'] = TRUE:
然后它不会工作,并且不会自动加载来自供应商文件夹的文件,现在有两种可能的解决方案,已经提到了#34; Jethro Hazelhurst&#34;。
另一个简单的解决方案是在应用程序文件夹中复制composer.json,然后从应用程序文件夹运行composer install,或者将vendor文件夹与composer.json和composer.lock一起移动到应用程序文件夹,然后此TRUE值将起作用正常。
感谢。
答案 2 :(得分:0)
您可以在命令提示符下使用composer dump-autoload。这将重新生成要包含在项目中的文件列表。
答案 3 :(得分:0)
对于可能有此问题的其他任何人。 Codeigniter 3 在应用程序中有第三方文件夹,用于放置供应商目录(供应商目录包含库)。
<块引用>composer.json (/composer.json)
告诉 composer 使用第三方文件夹中的 vendor 目录来存储库
"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:在每个请求上自动加载所有库可能会导致网站速度变慢,如果有很多依赖项和中等至高流量的网站。如果是这种情况,请根据需要加载库。