在生产环境中,您必须确保环境变量APP_ENV
设置正确。文档告诉您如何为各种Web服务器做到这一点。例如,在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 % !-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;
}
这篇文档有点难懂,因为相关部分都被注释掉了。
如果你想用内置的Web服务器模拟生产环境,可以按照以下步骤进行:
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