【问题标题】:Composer runs locally but errors on productionComposer 在本地运行,但在生产中出错
【发布时间】: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-autoloadphp 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


【解决方案1】:

尝试删除 composer.lock 中的所有文本并更新 composer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多