对composer进行故障排除:类未使用CodeIgniter3自动加载



问题

我正在尝试使用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:如果存在许多依赖项和流量适中到过大的网站,则在每次请求时自动加载所有库可能会导致网站运行缓慢。如果是这种情况,则根据需要加载库。

相关内容

  • 没有找到相关文章

最新更新