如何在生产环境下调试Symfony 4项目?我的意思是只有我从特定IP才能这样做。在Symfony 2/3中,我有app_dev.php控制器。如何在Symfony 4和Apache中实现这一点?
如果我通过VirtualHost或.env更改APP_ENV为dev,则所有应用程序用户都将看到调试工具栏、异常日志等。
SetEnvIf Remote_Addr "127.0.0.1" APP_ENV=dev APP_DEBUG=1
(需要https://httpd.apache.org/docs/trunk/mod/mod_setenvif.html)index.php
复制/粘贴为dev.php
并更改:
//$env = $_SERVER['APP_ENV'] ?? 'dev';
$env = 'dev';
您可以限制IP或在操作后将其删除。
/var/logs
) 来进行调试 :) - Gaylord.P<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或计算机。这是一个比较广泛的问题。
最好的方法是使用像monolog这样的日志工具,其默认输出目录为project/var/log/env.log
。
为什么你会看到所有应用程序用户都将看到调试工具栏、异常日志等
与你的环境设置有关。
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
public/index.php
中添加并测试一些代码行后的更改,以硬编码设置$_SERVER['APP_ENV']
、$_SERVER['APP_DEBUG']
和$_ENV['APP_DEBUG']
,就像在config/bootstrap.php
中一样? - Vladimir Ch