仅在一个站点上显示 PHP 错误
Posted
技术标签:
【中文标题】仅在一个站点上显示 PHP 错误【英文标题】:Display PHP errors on only one site 【发布时间】:2011-10-24 02:11:33 【问题描述】:我有一个开发环境和一个运行在同一主机上的实时环境,使用 nginx 和 fastcgi。在 php.ini 中,display_errors
设置为关闭,这样错误就不会显示在生产站点上。
现在,在开发环境中,我需要能够看到这些错误。所以我会做ini_set('display_errors', 'On');
,但是,如果是解析错误,则不会执行,也不会显示错误。
所以我的问题是,有什么方法可以在我的 php.ini 文件中安全地将 display_errors
设置为 on,然后可以使用 nginx 中的虚拟主机文件来确保错误不会显示在生产现场?
【问题讨论】:
这可能有用:***.com/questions/1049326/… 很遗憾没有,因为我没有使用 Apache。 看看这里:***.com/questions/107828/… 你可以用 .htaccess 解决这个问题 nginx 不支持 .htaccess。 【参考方案1】:如果您使用的是 fastcgi,您可以将其配置为使用不同的 php.ini 文件运行 php。我不熟悉 nginx 和 fastcgi 配置,因此无法为您提供任何提示。请参阅php manual 了解如何运行 PHP。
我认为您可能希望像 php -d display_errors=On
一样为开发环境运行它
【讨论】:
这是个好建议。现在研究如何为单个虚拟主机设置它。如果有人对如何做到这一点有任何想法,请加入。 我的一位同事想通了。他必须设置一个单独的 php-cgi 守护进程。 使用 php-fpm 并使用不同的套接字/端口设置不同的“池”,然后您可以加载每个池的特定设置。【参考方案2】:我相信您可以使用error_report 直接在脚本中设置错误报告级别。我手头没有任何代码可以确定,但我知道你可以在不接触 php.ini 的情况下更改它。
【讨论】:
error_report 仅规定将报告的内容。 display_errors 决定是否显示错误。任何这些解决方案的问题在于,当使用 CGI 运行脚本时,如果出现解析错误,则永远不会运行脚本。由于脚本未运行,因此永远不会设置 display_error - 并且不会显示错误。以上是关于仅在一个站点上显示 PHP 错误的主要内容,如果未能解决你的问题,请参考以下文章