2011-08-10 27 views
3

我有一个开发环境和运行在同一主机上的实时环境,使用nginx和fastcgi。在php.ini中,display_errors设置为关闭,以便错误不会显示在生产站点上。只在一个站点上显示PHP错误

现在,在开发环境中,我需要能够看到这些错误。所以我会做ini_set('display_errors', 'On');,但是,如果它是一个分析错误,那将不会被执行,错误将不会显示。

所以我的问题是,有什么办法可以在我的php.ini文件中安全地设置display_errors到on,然后可能在nginx中使用虚拟主机文件来确保错误不会显示在生产中现场?

+0

这可能是有用的:http://stackoverflow.com/questions/1049326/php-error-reporting-on-specific-folders – EdoDodo

+2

不幸的是,因为我没有使用Apache。 –

+0

看看这里:http://stackoverflow.com/questions/107828/how-can-i-turn-on-php-errors-display-on-just-a-subfolder 你可以用.htaccess解决这个问题 – Marian

回答

3

如果您使用的是fastcgi,您可以将其配置为使用不同的php.ini文件运行php。我不熟悉nginx和fastcgi config,所以不能提供任何提示。了解如何运行PHP可以参见php manual

我想你可能要像php -d display_errors=On运行它的开发环境

+0

这是一个很好的建议。研究如何为单个虚拟主机进行设置。如果任何人有关于如何做到这一点的任何想法,请编钟。 –

+0

我的一位同事弄明白了。他必须建立一个单独的php-cgi守护进程。 –

+1

使用php-fpm并使用不同的套接字/端口设置不同的“池”,然后您可以加载每个池的特定设置。 – SleighBoy

0

我相信你可以在你的脚本中使用error_report直接设置错误报告级别。我手边没有任何代码来检查是否确定,但我知道您可以在不触及php.ini的情况下更改它。

+0

error_report仅指示将报告的内容。 display_errors决定是否显示错误。任何这些解决方案的问题是,当使用CGI运行脚本时,如果存在解析错误,则脚本永远不会运行。由于该脚本未运行,因此display_error从不设置 - 并且错误将不会显示。 –