2

我做了一个 symfony 4.3 应用程序,想把它放在我的 OVH 服务器上。我将我的应用程序保存在 github 上,并忽略了 .env 文件,以及 .gitignore 中已忽略的所有文件和文件夹。然后,在 SSH 中,在我的 OVH 服务器中,我做了一个 git clone 来获取我的应用程序。然后我做了一个作曲家更新以获取所有丢失的文件和文件夹(var、vendor、.env)。这给了我错误:

Executing script cache:clear [KO]
[KO]
script cache:clear returned with error 255
!!
script @auto-scripts was called via post-update-cmd

供应商出现在我的服务器上,但既没有 var 也没有 .env。所以我通过filezilla在FTP中手动传输.env,我用APP_ENV = prod更改了它,然后我手动(仍然使用filezilla)创建了一个var文件夹,其中包含缓存和日志文件夹(我没有传输我的所以它是空的,所以已经清除)。然后我检查了:我的网站正在互联网上运行(来自我的服务器,而不是本地)。

那么,问题解决了吗?......是的,没有。该网站有效,但我的目的不是在互联网上发布网站,而是学习(我在 udemy 上学习 symfony 课程)。我必须学习如何使用 heroku 进行自动部署。

所以我创建了一个 heroku 帐户,将其链接到我的 github 帐户和我的应用程序。但是当我尝试从heroku手动部署(在自动部署之前检查它是否有效)时,我仍然有一个缓存清除255错误([修改:一些数字和字母]是我隐藏在错误消息中的东西,因为我想知道是否这可能很敏感):

Executing script cache:clear [KO]
        [KO]
       Script cache:clear returned with error code 255
       !!  PHP Fatal error:  Uncaught Symfony\Component\Dotenv\Exception\PathException: Unable to read the "/tmp/build_[modified : some numbers and letters]/.env" environment file. in /tmp/build_[modified : some numbers and letters]/vendor/symfony/dotenv/Dotenv.php:484
       !!  Stack trace:
       !!  #0 /tmp/build_[modified : some numbers and letters]/vendor/symfony/dotenv/Dotenv.php(65): Symfony\Component\Dotenv\Dotenv->doLoad(false, Array)
       !!  #1 /tmp/build_[modified : some numbers and letters]/vendor/symfony/dotenv/Dotenv.php(85): Symfony\Component\Dotenv\Dotenv->load('/tmp/build_a7cc...')
       !!  #2 /tmp/build_[modified : some numbers and letters]/config/bootstrap.php(15): Symfony\Component\Dotenv\Dotenv->loadEnv('/tmp/build_a7cc...')
       !!  #3 /tmp/build_[modified : some numbers and letters]/bin/console(30): require('/tmp/build_a7cc...')
       !!  #4 {main}
       !!    thrown in /tmp/build_[modified : some numbers and letters]/vendor/symfony/dotenv/Dotenv.php on line 484
       !!  
       Script @auto-scripts was called via post-install-cmd
 !     ERROR: Dependency installation failed!
 !     
 !     The 'composer install' process failed with an error. The cause
 !     may be the download or installation of packages, or a pre- or
 !     post-install hook (e.g. a 'post-install-cmd' item in 'scripts')
 !     in your 'composer.json'.
 !     
 !     Typical error cases are out-of-date or missing parts of code,
 !     timeouts when making external connections, or memory limits.
 !     
 !     Check the above error output closely to determine the cause of
 !     the problem, ensure the code you're pushing is functioning
 !     properly, and that all local changes are committed correctly.
 !     
 !     For more information on builds for PHP on Heroku, refer to
 !     https://devcenter.heroku.com/articles/php-support
 !     Push rejected, failed to compile PHP app.
 !     Push failed

由于错误消息,我查看了我的 composer.json 文件,我有这个:

"scripts": {
        "auto-scripts": {
            "cache:clear": "symfony-cmd",
            "assets:install %PUBLIC_DIR%": "symfony-cmd"
        },
        "post-install-cmd": [
            "@auto-scripts"
        ],
        "post-update-cmd": [
            "@auto-scripts"
        ]
    },

有什么问题吗?我看不出我能改变什么。

我尝试了很多我在互联网上找到的东西:

https://github.com/symfony/flex/issues/406 作曲家更新 symfony/flex --no-plugins --no-scripts。作曲家安装

在 ssh 中执行本身并没有产生任何错误,但是在再次尝试在 heroku 上部署时没有解决问题

在这种情况下,我还尝试了我课程中老师提出的建议:

composer config disable-tls true
composer install

相同:执行此操作时没有错误,但尝试在 heroku 上部署时没有解决问题

自昨天以来的许多事情,我都不记得我尝试过的所有事情:-/但没有任何效果。

4

1 回答 1

1

确保在 Heroku 中设置环境变量 SYMFONY_ENV = prod,在 .env 文件中设置 APP_ENV = prod。

于 2019-06-12T12:11:36.277 回答