Symfony 4如何启用生产模式?

12
在Symfony 4中,默认情况下,index.php会设置为开发模式。
$env = $_SERVER['APP_ENV'] ?? 'dev';

Symfony官方文档指出:Symfony Dotenv应仅在开发/测试/预发布环境中使用。对于生产环境,请使用“真正”的环境变量。

因此,我理解:将APP_ENV=prod作为环境变量是必要的,以启用生产模式。

我理解正确吗?

1个回答

16

在生产环境中,您必须确保环境变量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 %{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;
}

这篇文档有点难懂,因为相关部分都被注释掉了。

如果你想用内置的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

谢谢@dbrumann,配置Web服务器文档是缺失的页面。因此,如果没有自定义开发,APP_ENV是必需的。 - guns17

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接