我正在尝试将 Symfony 3 置于生产模式。我是否正确理解为此从地址中删除/app_dev.php
并重置缓存就足够了?
php bin/console cache:clear --env=prod --no-debug
之后,当我访问该站点时,我再次看到调试栏,上面写着Environment dev
,即 请求通过web/app_dev.php
。
我究竟做错了什么?
我正在尝试将 Symfony 3 置于生产模式。我是否正确理解为此从地址中删除/app_dev.php
并重置缓存就足够了?
php bin/console cache:clear --env=prod --no-debug
之后,当我访问该站点时,我再次看到调试栏,上面写着Environment dev
,即 请求通过web/app_dev.php
。
我究竟做错了什么?
服务器设置
确保服务器将请求定向到根目录下的正确文件 (app.php | app_dev.php)。为此,只需将它放在 app.php 文件的开头
exit('true');
,打开站点的根页面,一切都会变得清晰:如果你看到它true
- 文件是正确的,如果你没有看到它 - 看看服务器设置。服务器设置取决于您使用的是 apache 还是 nginx。如果是apache - 查看站点 .htaccess 文件的根目录。除其他外,它应该包含行RewriteRule .? %{ENV:BASE}/app.php [L]
。如果您的文件是原始文件,那么那里的一切都应该是有序的。对于nginx,不幸的是,事情有点复杂,必须手动设置。类似这个块的东西应该出现在你的配置中,这样对根的请求就可以到达 app.php:应用程序.php
如果请求进入正确的文件 app.php,但该站点仍以开发模式打开,则您需要检查 app.php 的内容。例如,这个文件的代码对我来说是这样的:
注意线
$kernel = new AppKernel('prod', false);
,在问题的上下文中它是最重要的。这是将环境设置为第一个参数并将调试设置为第二个参数的地方。在这里你应该有这些值。此外,您可能需要运行命令来启动 prod 环境
生成所有必要的静态。但是这里的情况是模棱两可的,也许您的系统配置为动态生成静态。
Symfony 与它无关。它是关于 Homestead(来自 Laravel 的同一个虚拟机)。事实证明,如果在
Homestead.yaml
该部分sites
添加type: symfony
然后 VM 在“开发”模式下为 Symfony 创建一个配置,其中
/etc/nginx/sites-enabled/site.app
写入location
路径app_dev.php
这是值得首先看的。