如何在不显示调试信息的情况下,基于到prod的符号链接配置设置一个登台环境?



我想用与prod环境相同的配置设置staging环境。

根据文档,我进行如下操作:

我创建了一个指向prodstaging符号链接

  • 在.env:APP_ENV=staging
  • 中配置env清空缓存:php bin/console cache:clear
  • 请求一个不存在的URL来触发404错误:http://localhost:8080/an-url-that-does-not-exists

APP_ENV=prod,我的自定义错误页面呈现正确,但当APP_ENV=staging,调试消息NotFoundHttpException呈现?没有显示分析器。

我错过了什么?

tldr,

创建一个.env.staging文件,并使用它将APP_DEBUG设置为0。调试模式和调试环境独立设置。


默认情况下,除非您明确设置它,否则将从环境自动设置调试模式(APP_DEBUG)。

这在以下步骤中发生:

在您的前控制器(通常是index.php)中,您会发现这一行:

(new Dotenv())->bootEnv(dirname(__DIR__).'/.env');

DotEnv::bootEnv()你会发现这个:

$debug = $_SERVER[$k] ?? !in_array($_SERVER[$this->envKey], $this->prodEnvs, true);

这将比较你的APP_ENV和数组"environments"DotEnv认为"类生产"。默认情况下,该数组只包含prod

您可以通过调用setProdEnvs():

来修改DotEnv的实例
(new Dotenv())
->setProdEnvs(['prod', 'staging'])
->bootEnv(dirname(__DIR__).'/.env');

…但通常只要在.env文件上禁用调试模式就足够了。

最新更新