在Symfony 4中, index.php 默认设置开发模式
$env = $_SERVER['APP_ENV'] ?? 'dev';
Symfony官方文档说:Symfony Dotenv只能用于 开发/测试/暂存 环境。对于生产环境,请使用" real"环境变量。
所以我理解:APP_ENV=prod
因为环境变量是启用prod模式所必需的。
我是对的吗?
答案 0 :(得分:11)
您必须确保在生产环境中正确设置了环境变量APP_ENV
。该文档告诉您如何为various web servers执行此操作。例如,在Apache配置中,您必须使用SetEnv
。这看起来像这样:
DocumentRoot /var/www/project/public
<Directory /var/www/project/public>
AllowOverride None
Order Allow,Deny
Allow from All
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
</Directory>
SetEnv APP_ENV prod
SetEnv APP_DEBUG 0
...
nginx的类似配置会使用fastcgi_param
,看起来有点像这样:
location ~ ^/index\.php(/|$) {
fastcgi_pass unix:/var/run/php7.1-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param APP_ENV prod;
fastcgi_param APP_DEBUG 0;
}
doc页面有点意思,因为各个位都被注释掉了。
如果您想使用内置网络服务器模拟生产环境,可以这样做:
APP_ENV=prod APP_DEBUG=0 bin/console server:run
这需要使用composer安装server-pack,当然你也可以设置命令选项--env
,以达到同样的效果。
并确保您也检查了.env
和.env.local
文件。
# prod config of .env or/and .env.local
APP_ENV=prod
APP_DEBUG=0