我有一个基于Symfony 4.3的应用程序。
它可以在本地计算机上按预期工作,并且正在加载.env.local
配置文件。
它也可以在生产服务器上按预期方式工作,并在其中加载.env
文件。
但是开发服务器上出了点问题。
我们将环境变量APP_ENV
设置为值dev
。
贝娄是php bin/console about
在开发环境中的输出:
-------------------- ---------------------------------
Kernel
-------------------- ---------------------------------
Type App\Kernel
Environment dev
Debug true
Charset UTF-8
Cache directory ./var/cache/dev (1.3 MiB)
Log directory ./var/log (138 KiB)
如果我在phpinfo()
文件的开头使用/public/index.php
函数,则仅出现1次APP_ENV-它位于 Environment 部分下。
但是,如果我在加载phpinfo()
之后使用config/bootstrap.php
,则 PHP变量部分中不会再出现其他事件,它们都包含prod
:
$_SERVER['APP_ENV'] prod
$_ENV['APP_ENV'] prod
^这两个值不在/public/index.php
文件的开头,因此看起来Symfony正在添加它们并将它们设置为错误的prod
值。
.env.dev
文件包含以下内容:
###> symfony/framework-bundle ###
APP_ENV=dev
,但似乎根本没有加载此文件,而已加载.env
来代替它。
我进行了一些调试,看起来好像在config/bootstrap.php
文件的这一行上加载了错误的env文件(并添加了phpinfo()中显示的其他变量):
// load all the .env files
(new Dotenv(false))->loadEnv(dirname(__DIR__).'/.env');
我想念什么吗?我认为symfony环境仅受APP_ENV
环境变量控制。但是看来我错了吗?
编辑:只是为了澄清一下-关于开发,我的意思是远程开发服务器(应该改称为暂存),而不是本地主机。