【问题标题】:How to troubleshoot Composer autoload in Codeigniter?如何对 Codeigniter 中的 Composer 自动加载进行故障排除?
【发布时间】:2020-02-25 06:39:53
【问题描述】:

我是 在 Codeigniter 中使用 Composer 的新手,并且已经阅读了所有我可以尝试解决我的问题的内容,但还不够。自动加载器似乎正在自动加载?所以这就是我卡住的地方:

  • 我已经安装了作曲家。
  • 需要使用 composer require pdf/mpdf 的 MPDF 包
  • 我是从项目的根目录执行此操作的,因此供应商文件夹以及 composer.json 文件位于我的项目的根目录
  • 在我的 config/config.php 文件中,我将 composer_autoload 值更改为 $config['composer_autoload'] = FCPATH . "/vendor/autoload.php";

然后我在我的默认控制器中创建了一个简单的函数,如下所示:

function m_pdf() {
        $mpdf = new mPDF();
        $mpdf->WriteHTML('Hello World');
        $mpdf->Output();
    }

但是当我运行它时,我得到一个错误:Message: Class 'mPDF' not found

我尝试将所有内容移动到应用程序文件夹,并将配置文件中的值更改为 TRUE,我尝试从函数本身调用自动加载器,但没有成功。

我觉得我遗漏了一些明显的东西。也许有些依赖。正如我所说,我是使用作曲家的新手。网上有一些关于运行 php composer.phar 的建议,但是当我尝试运行它时出现错误。会这样吗?

【问题讨论】:

  • 如果你检查documentation for mpdf,他们的例子是:$mpdf = new \Mpdf\Mpdf();。您需要使用正确的命名空间和正确的大小写。
  • 谢谢@MagnusEriksson。我已经纠正了这个错误,但仍然遇到同样的问题:Message: Class 'Mpdf\Mpdf' not found
  • 您确定路径正确吗?如果你这样做,你会得到什么:var_dump(is_file(FCPATH . "/vendor/autoload.php"));
  • 耶,整理好了。似乎某种形式的缓存在起作用,所以在进行了所有更改、新的浏览器窗口和几个 Ctrl+F5 之后,它终于可以工作了。感谢您的耐心等待!

标签: php codeigniter composer-php codeigniter-3 autoloader


【解决方案1】:

1) 在命名空间中 => 使用正确的 Mpdf 类

如果还是不行 => composer dump-autoload(重新配置你的作曲家classMap)

如果转储自动加载没有帮助 =>

  • 删除vendor目录
  • composer install

【讨论】:

  • 感谢以上建议。我在函数$mpdf = new \Mpdf\Mpdf() 中添加了正确的命名空间并尝试转储自动加载并删除供应商文件夹,并再次安装作曲家拉入所有文件,但是当我运行该函数时,我得到: Message: Class 'Mpdf\未找到 Mpdf'
猜你喜欢
  • 1970-01-01
  • 2023-04-07
  • 2013-11-20
  • 1970-01-01
  • 2011-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多