Symfony4:访问生产服务器上的DEV环境

时间:2018-06-01 13:21:11

标签: php symfony symfony4

在Symfony3中,当我想在“实时”服务器上的DEV环境中浏览网站时,我只需在/web/app_dev.php中输入我的IP地址,然后在浏览器中打开http://www.example.com/app_dev.php/

由于在Symfony4中,环境现在设置为/.env,如何在生产计算机上查看DEV环境?

编辑:我正在寻找一种在生产中的解决方案,因此应用任何全局更改(例如在{{1}中设置APP_ENV=dev })不是一个选项。

2 个答案:

答案 0 :(得分:2)

您可以在.env文件APP_ENV内更改为dev:

APP_ENV=dev

如果设置该变量symfony将系统加载到开发环境中,因为在Kernel.php中有一行检查该变量:

$kernel = new Kernel($_SERVER['APP_ENV'] ?? 'dev', $_SERVER['APP_DEBUG'] ?? false);

如果您想在不更改.env文件的情况下执行此操作,您可以根据您访问的网址(例如APP_ENV=/home/user/app-name/dev.env或现场直播)在Apache vhost或Nginx FastCgi配置中设置变量服务器:APP_ENV=/etc/app-name.prod.env

因此,在这种情况下,您有许多.env文件,但您可以使用基于网址的规则

答案 1 :(得分:0)

起初这是个坏主意,这就是wasn't possible by default to access app_dev.php on production server(symfony< 4)的原因。你向公众,尤其是攻击者提供了大量内部信息。

来自symfony docs

  

部署到生产后,请确保您无法访问app_dev.php或config.php脚本(即http://example.com/app_dev.phphttp://example.com/config.php)。如果您可以访问这些,请务必从上面的配置中删除DEV部分。

您应该能够从日志中调试大部分内容。

但是如果你真的想这样做,你可以删除public/index.php并创建public/app.phppublic/app_dev.php,就像在symfony 3中一样,并使其与env变量一起使用。 - https://github.com/symfony/symfony-standard/tree/3.4/web

编辑:要明确:您可以删除public/index.php,创建public/app.phppublic/app_dev.phpindex.php的副本)。从symfony 3标准版中获取灵感,根据您的需求进行调整。

EDIT2:正如@Cerad所说,拥有index.phpindex_dev.php文件名是更好的主意(遵循Symfony4的决定)。