我有一个使用Symfony 5开发的应用程序,它在我的本地环境()中工作得很好,但是当我将它部署到活动服务器时,它会用一个空的白页崩溃,并使用500个内部服务器错误进行响应。
当我将SSH放入服务器并将APP_ENV
变量的值从dev
文件中的prod
手动更改为.env时,我可以看到以下错误:
试图从名称空间"Symfony\Bundle\WebProfilerBundle“加载类"WebProfilerBundle”。您忘记了另一个名称空间的"use“语句吗?
我正在使用Github操作来部署我的应用程序,在我的操作中,我安装的PHP依赖项如下
- name: Install dependencies
run: |
export APP_ENV=prod
composer install --no-dev --optimize-autoloader
因此,我不希望只开发我的生产服务器中的依赖项,这就是--no-dev
标志,如果我正确理解了WebProfilerBundle用于检查开发中的请求,那么它将缩进到只用于dev
环境中。
为什么Symfony认为它必须加载这个包?另外,我应该将我的自定义错误页配置为404和500个错误(在bundles/TwigBundle/Exception/error.html.twig
文件夹下添加一个templates
文件),为什么我的自定义错误页面没有显示呢?为什么我会得到一页空白的白纸?
我怀疑这与我部署的方式有关(因为它在我的本地机器上工作)。
我已经厌倦了从composer安装中删除标志(因此只运行composer install
),但这也导致了一个错误。
这个应用程序应该在这个域上运行:https://thebedechkacase.com/
发布于 2020-10-12 09:57:30
这句话和高迪的回答都为我指明了正确的方向,所以谢谢你。但准确的分析来自于阅读Symfony部署指南。
如果在此步骤中得到“未找到的类”错误,则在运行此命令之前,可能需要运行导出APP_ENV=prod (如果不使用Symfony Flex,则需要导出SYMFONY_ENV=prod ),以便在prod环境中运行后置-cmd脚本。
由于我的不是使用Symfony的,所以我还需要将SYMFONY_ENV
变量设置为prod
。
此外,我还在回购中使用了我的.env
--实际上它只包含开发数据和APP_ENV=dev
,在运行程序的部署过程中创建了“真正的”.env
文件,从Github的秘密存储中检索它的值。现在,另一个问题是,我首先将代码签出给运行程序,然后运行composer install
,然后创建生产.env (覆盖从回购中签出的代码),因此composer install
实际上使用了dev设置运行。为了解决这个问题,我在运行composer install --no-dev --optimize-autoloader
之前移动了env文件的创建,然后执行了export SYMFONY_ENV=prod
。
这两者的结合解决了我的问题!
发布于 2020-09-24 07:44:09
检查您的config/bundles.php
并确保设置Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true]
。如果我正确理解,您的应用程序正在尝试加载类,而这个类不在composer下面。还要确保清除prod (php bin/console cache:clear
)上的缓存。还要确保您的生产服务器没有.env.local
文件(或者它的APP_ENV
也应该是prod
)
https://stackoverflow.com/questions/64035748
复制相似问题