Symfony 4如何启用prod模式?

时间:2018-02-19 15:11:45

标签: symfony

在Symfony 4中, index.php 默认设置开发模式

$env = $_SERVER['APP_ENV'] ?? 'dev';

Symfony官方文档说:Symfony Dotenv只能用于 开发/测试/暂存 环境。对于生产环境,请使用" real"环境变量。

所以我理解:APP_ENV=prod因为环境变量是启用prod模式所必需的。

我是对的吗?

1 个答案:

答案 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