Symfony 4调试生产环境

时间:2018-03-02 08:00:46

标签: symfony debugging symfony4

如何在生产环境中调试Symfony 4项目?我的意思是只有来自特定IP的我才能做到这一点。在Symfony 2/3中我有app_dev.php控制器。如何使用Symfony 4和Apache做到这一点? 如果我将.env或通过VirtualHost APP_ENV更改为dev,则所有应用程序用户都将看到调试工具栏,异常日志等。

4 个答案:

答案 0 :(得分:1)

您可以复制/粘贴index.php dev.php并更改:

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

http://yourwebsite.com/dev.php/

您可以限制IP或删除操作后删除。

答案 1 :(得分:1)

由系统环境变量配置的Symfony环境。所以只需添加apache app config(默认为.htaccess) SetEnvIf Remote_Addr "127.0.0.1" APP_ENV=dev APP_DEBUG=1 (需要https://httpd.apache.org/docs/trunk/mod/mod_setenvif.html

答案 2 :(得分:0)

这是一个广泛的问题。

最好的方法是使用像monolog这样的日志记录工具,默认输出目录是project/var/log/env.log

为什么您看到all app users will see debug toolbar, exception logs etc.与您的环境设置有关。

Symfony 4环境设置的工作方式如下,加载config/packages/(env)/package.yaml然后加载默认/生产配置config/packages/package.yaml(如果存在)。 当您设置env dev时,您正在加载config/packages/dev/web_profiler.yaml并且在生产中,该插件没有默认不显示的定义。

以下是有关symfony 4中的环境设置的更多信息。https://symfony.com/doc/current/configuration/environments.html

答案 3 :(得分:0)

我不建议在生产环境中使用探查器,尽管如果使用如下配置,可以使用Apache来“模仿” Symfony 2-3行为:

<VirtualHost *:80>
...
DocumentRoot "/yourRootDirectory"

<Directory "/yourRootDirectory/">
    DirectoryIndex index.php
    Require all granted
</Directory>       

...

SetEnvIf Request_URI ^/app_dev.php APP_ENV=dev           

Alias /app_dev.php "/yourRootDirectory/"
<Location "/app_dev.php">        
    Require local
</Location>
...        
</VirtualHost>

从本地主机请求http://localhost/app_dev.php,您可以在开发模式下以Symfony 4,5中的应用程序使用Symfony 2、3中的探查器来获取应用程序。

请特别注意Require local作为您的别名,您也可以使用Require ip 192.168.1.1 127.0.0.1或所需的IP(请参阅Apache文档)。但是要小心,将开发环境暴露在不受您控制的ip或计算机上。