如何打开PHP错误仅在子文件夹上显示

php
2022-08-31 00:31:40

我不希望错误显示 /html,但我希望它们显示在 .一切都已设置好,因此根本不会显示错误。我如何让错误只显示在该文件夹(及其子文件夹)中?PHP/html/beta/usercomponent


答案 1

在:.htaccess

php_value error_reporting 2147483647

根据文档,这个数字应该启用“所有”错误,无论版本如何,如果你想要一个更精细的设置,手动或值在一起,或者运行

php -r 'echo E_ALL | E_STRICT ;'

让 php 为您计算值。

你需要

AllowOverride All

在 apaches 主配置中启用 .htaccess 文件。

有关此内容的更多阅读信息,请点击此处:


通知如果您使用的是Php-CGI而不是mod_php,则可能无法像宣传的那样工作,并且您将得到的只是内部服务器错误,并且除了在每个脚本的基础上在站点范围内启用它之外,您将没有太多选择

error_reporting( E_ALL | E_STRICT ); 

或在错误发生之前进行类似的构造。

我的建议是禁止向用户显示错误,并大量利用php error_log功能。

display_errors = 0
error_logging = E_ALL | E_STRICT 
error_log = /var/log/php 

如果您遇到太嘈杂的问题,这不是您需要有选择地删除错误报告的迹象,这是有人应该修复代码的迹象。


@Roger

是的,您也可以在apaches配置的构造中使用它,但是,在这种情况下,.htaccess是等效的,并且使其更具可移植性,特别是如果您有同一代码库的多个工作签出副本,并且您希望将此更改分发给所有这些副本。<Directory>

如果您有多个虚拟主机,则需要在相应的虚拟主机定义中使用构造,否则,是的

  <Directory /path/to/wherever/on/filesystem> 
      <IfModule mod_php5.c>
         php_value error_reporting 214748364
      </IfModule>
  </Directory>

附加的“ifmodule”命令只是一个安全网,所以如果你没有mod_php,apache的上述问题就不会发生。


答案 2

最简单的方法是从 .htaccess 文件控制错误报告。但这是假设您使用的是 Apache,并且 /html/beta/usercomponent 中的脚本是从该目录调用的,而不是从其他地方调用的。

.htacess

php_value error_reporting [int]

您必须按照error_reporting文档中的说明从列表中自己编写整数值,因为当Apache解释.htaccess时,不会定义E_ERROR等常量。

这是一个简单的按位标志,因此例如,值 12 将为 E_WARNING + E_PARSE + E_NOTICE。


推荐