【问题标题】:Error Deploying code to heroku when having Helpers folder required in composer.json当 composer.json 中需要 Helpers 文件夹时,将代码部署到 heroku 时出错
【发布时间】:2019-09-23 12:17:45
【问题描述】:

我是 heroku 的新手,我正在尝试将我的网络应用程序(在本地环境中工作)部署到 heroku。我遵循文档直到步骤:git push heroku master。 heroku 安装供应商后,在生成优化的自动加载文件时,它显示一个异常:

Generating optimized autoload files
remote:        > Illuminate\Foundation\ComposerScripts::postAutoloadDump
remote:        PHP Warning:  Uncaught ErrorException: require(/tmp/build_c8be5dba02b1fb54b907b9b78ea87415/vendor/composer/../../App/Helpers/functions.php): failed to open stream: No such file or directory in /tmp/build_c8be5dba02b1fb54b907b9b78ea87415/vendor/composer/autoload_real.php:66
PHP Warning:  Uncaught ErrorException: require(/tmp/build_c8be5dba02b1fb54b907b9b78ea87415/vendor/composer/../../App/Helpers/functions.php): failed to open stream: No such file or directory in /tmp/build_c8be5dba02b1fb54b907b9b78ea87415/vendor/composer/autoload_real.php:66
remote:        Stack trace:
remote:        #0 /tmp/build_c8be5dba02b1fb54b907b9b78ea87415/vendor/composer/autoload_real.php(66): Composer\Util\ErrorHandler::handle(2, 'require(/tmp/bu...', '/tmp/build_c8be...', 66, Array)
remote:        #1 /tmp/build_c8be5dba02b1fb54b907b9b78ea87415/vendor/composer/autoload_real.php(66): require()
remote:        #2 /tmp/build_c8be5dba02b1fb54b907b9b78ea87415/vendor/composer/autoload_real.php(56): composerRequire52f94ddc173261f270a6e983eeb90c6c('42ab15150aa748b...', '/tmp/build_c8be...')
remote:        #3 /tmp/build_c8be5dba02b1fb54b907b9b78ea87415/vendor/autoload.php(7): ComposerAutoloaderInit52f94ddc173261f270a6e983eeb90c6c::getLoader()
remote:        #4 /tmp/build_c8be5dba02b1fb54b907b9b78ea87415/vendor/laravel/framework/src/Illuminate/Foundation/ComposerScripts.php(43): require_once('/tmp/build_c8be...')
remote:        # in /tmp/build_c8be5dba02b1fb54b907b9b78ea87415/vendor/composer/autoload_real.php on line 66
remote:
remote:        Warning: Uncaught ErrorException: require(/tmp/build_c8be5dba02b1fb54b907b9b78ea87415/vendor/composer/../../App/Helpers/functions.php): failed to open stream: No such file or directory in /tmp/build_c8be5dba02b1fb54b907b9b78ea87415/vendor/composer/autoload_real.php:66
remote:        Stack trace:
remote:        #0 /tmp/build_c8be5dba02b1fb54b907b9b78ea87415/vendor/composer/autoload_real.php(66): Composer\Util\ErrorHandler::handle(2, 'require(/tmp/bu...', '/tmp/build_c8be...', 66, Array)
remote:        #1 /tmp/build_c8be5dba02b1fb54b907b9b78ea87415/vendor/composer/autoload_real.php(66): require()
remote:        #2 /tmp/build_c8be5dba02b1fb54b907b9b78ea87415/vendor/composer/autoload_real.php(56): composerRequire52f94ddc173261f270a6e983eeb90c6c('42ab15150aa748b...', '/tmp/build_c8be...')
remote:        #3 /tmp/build_c8be5dba02b1fb54b907b9b78ea87415/vendor/autoload.php(7): ComposerAutoloaderInit52f94ddc173261f270a6e983eeb90c6c::getLoader()
remote:        #4 /tmp/build_c8be5dba02b1fb54b907b9b78ea87415/vendor/laravel/framework/src/Illuminate/Foundation/ComposerScripts.php(43): require_once('/tmp/build_c8be...')
remote:        # in /tmp/build_c8be5dba02b1fb54b907b9b78ea87415/vendor/composer/autoload_real.php on line 66
remote:        PHP Fatal error:  composerRequire52f94ddc173261f270a6e983eeb90c6c(): Failed opening required '/tmp/build_c8be5dba02b1fb54b907b9b78ea87415/vendor/composer/../../App/Helpers/functions.php' (include_path='.:/app/.heroku/php/lib/php') in /tmp/build_c8be5dba02b1fb54b907b9b78ea87415/vendor/composer/autoload_real.php on line 66
remote:
remote:        Fatal error: composerRequire52f94ddc173261f270a6e983eeb90c6c(): Failed opening required '/tmp/build_c8be5dba02b1fb54b907b9b78ea87415/vendor/composer/../../App/Helpers/functions.php' (include_path='.:/app/.heroku/php/lib/php') in /tmp/build_c8be5dba02b1fb54b907b9b78ea87415/vendor/composer/autoload_real.php on line 66
remote:
remote:  !     ERROR: Dependency installation failed!
remote:  !
remote:  !     The 'composer install' process failed with an error. The cause
remote:  !     may be the download or installation of packages, or a pre- or
remote:  !     post-install hook (e.g. a 'post-install-cmd' item in 'scripts')
remote:  !     in your 'composer.json'.
remote:  !
remote:  !     Typical error cases are out-of-date or missing parts of code,
remote:  !     timeouts when making external connections, or memory limits.
remote:  !
remote:  !     Check the above error output closely to determine the cause of
remote:  !     the problem, ensure the code you're pushing is functioning
remote:  !     properly, and that all local changes are committed correctly.
remote:  !
remote:  !     For more information on builds for PHP on Heroku, refer to
remote:  !     https://devcenter.heroku.com/articles/php-support
remote:
remote:  !     Push rejected, failed to compile PHP app.
remote:
remote:  !     Push failed
remote: Verifying deploy...
remote:
remote: !       Push rejected to young-oasis-37306.
remote:
To https://git.heroku.com/young-oasis-37306.git

按照它所说的,我认为问题是composer找不到App/Helpers文件夹,该文件夹在composer.json中定义:

    ...
    "autoload": {
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\\": "app/"
        },
        "files" :[
            "App/Helpers/functions.php"
        ]
    },
    ...
}

但是,因为这适用于本地作曲家,所以我真的不知道如何处理它。你能帮帮我吗?

Heroku 为我选择了平台包,我就写在这里,以防万一。

  • php (7.3.4)

  • ext-mbstring(与php捆绑)

  • 阿帕奇 (2.4.39)

  • nginx (1.14.2)

【问题讨论】:

    标签: php laravel laravel-5 heroku


    【解决方案1】:

    我猜它是在抱怨,因为它在路径“App/Helpers/functions.php”中找不到真正不存在的文件。

    尝试将文件更改为实际文件路径。我猜它看起来像这样:

     "autoload": {
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\\": "app/"
        },
        "files" :[
            "app/Helpers/functions.php"
        ]
    },
    

    【讨论】:

    • 可悲的是,我尝试将 composer.json 更改为“./app/Helpers/functions.php”和“app/Helpers/functions.php”,但没有任何效果。我可以得到你的电子邮件吗?我会把我使用的代码发给你,看看你能不能找出它的问题。
    • 这里私信我,我发给你! chat.stackoverflow.com/users/1489237/magus
    • 嗨@Magus。你能分享解决这个问题的解决方案吗?我上面也有同样的问题。提前致谢
    • hi @huyleuit 刚刚更新了解决方案,文件部分必须包含相对于项目根目录的路径。它应该反映目录命名结构,而不是类名。
    • @Magus 你能说得更具体点吗?我已经将文件路径更改为这种格式 "files": ["app/Components/Function.php", "app/Helpers/Helper.php"] 但在部署到 Heroku 时仍然遇到错误
    猜你喜欢
    • 1970-01-01
    • 2019-10-07
    • 2018-08-02
    • 2013-04-14
    • 1970-01-01
    • 2017-09-28
    • 2021-07-12
    • 2018-06-05
    • 2017-11-25
    相关资源
    最近更新 更多