【发布时间】:2018-03-26 03:11:39
【问题描述】:
我在 Laravel 框架中工作,并成功加载了一个文件,通过我的 Composer 的 files 数组拉入。我可以毫无问题地在本地运行composer update——我正在使用文件中的函数。
但是,当部署到 Digital Ocean 时,Composer 会抛出一个错误,表明它正在寻找供应商目录中的文件(即使它没有在本地寻找该文件)。
致命错误:composerRequire0b4716b00b8bec4a70dbf5ea5e415661():失败 需要打开 '/home/forge/myapp.com/vendor/composer/../../app/helpers/myHelper.php' (include_path='.:/usr/share/php') 在 /home/forge/myapp.com/vendor/composer/autoload_real.php 第 66 行
还有自动加载部分:
"autoload": {
"classmap": [
"database"
],
"files": [
"app/helpers/myHelper.php"
],
"psr-4": {
"App\\": "app/"
}
},
我认为这个问题可能有我需要的东西,但我不知道加载类和文件之间的区别是否使它与这个问题无关(显然我对这个问题感到困惑!):
How to I use Composer to autoload classes from outside the vendor?
【问题讨论】:
-
你试过
composer dump-autoload和php artisan dump-autoload -
您的某些文件丢失了。尝试在您的主机上重新上传或重新安装 laravel。
-
对我来说看起来不错,而且它似乎也尝试从正确的位置加载。你确定文件存在(
/home/forge/myapp.com/app/helpers/myHelper.php),并且可以被 php 读取?如果您在引导应用程序时只是require文件,而不是通过作曲家加载它,它也会失败吗? -
不要在生产环境中运行
composer update。提交composer.lock文件并运行composer install。 -
谢谢大家。不确定它是什么,但我更新了我的 Vagrant 盒子,重新部署到 Digital Ocean,这两个地方的事情似乎都在工作。希望我一次只做一件事来谈论实际问题,但是……太沮丧了!
标签: php laravel composer-php psr-4