更改 php 错误报告以仅隐藏特定站点的警告

更改 php 错误报告以仅隐藏特定站点的警告

sites-enabled想象一下可以从中获得的几个/etc/apache2/sites-available。(只有基于 Debian 的发行版这样工作。)

是否可以将warning来自 php 脚本的消息静音特定站点,而不触及实际htdocs

通常有几种解决方案可以实现相关目标:

  1. 向执行的脚本添加error_reporting()指令(例如) 。error_reporting(E_ERROR);
  2. 在文件中设置 php_flags.htaccess如下:php_flag display_errors off
  3. 使用ini_set内部脚本:

    ini_set('display_errors', 'Off');
    ini_set('display_startup_errors', 'Off');
    error_reporting(0);
    
  4. 添加@到引发警告或错误的函数前面。

  5. 改为php.ini实际说
    error_reporting = E_ALL ^ E_WARNING
    display_errors = 1

但是,这些都意味着要修改 htdocs 或全局应用更改。想象一下,它们以htdocs只读方式挂载。我如何才能仅抑制某些网站的警告(或通知)?

我假设 Debian/Ubuntu 有a2ensite特定的配置是有原因的,我希望我可以改变这些配置。示例“站点可用”配置中有一个log_level指令,但它处理记录的消息量。而不是 php 脚本输出的消息。

如果可能的话,手动添加php.iniapache2.conf或部分httpd.conf也可以。

也可以看看:

答案1

如果您有权访问 apache vhost 配置,当然您也可以在 sites-available 目录中的虚拟主机中使用 php_flag 指令。这样,它们仅适用于此 vhost。

在您的虚拟主机中添加类似这样的内容:

<IfModule mod_php5.c>
    php_admin_flag display_errors off
</IfModule>

编辑:

如果只想显示实际错误,则可以使用error_reporting带有整数值的 php 指令,该整数值描述要显示的错误级别类型:

<IfModule mod_php5.c>
    php_admin_flag display_errors on
    php_admin_value error_reporting 22517
</IfModule>

这相当于设置

error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED;

在 php.ini 中。更多可能的值例如这里:

https://web.archive.org/web/20131009000719/http://www.websitefactors.co.uk/php/2013/01/php-error-reporting-settings

错误报告值计算器:

http://www.bx.com.au/tools/ultimate-php-error-reporting-wizard

答案2

我补充道:

<IfModule mod_php5.c>
 php_admin_flag display_errors on
 php_admin_value error_reporting 30711
</IfModule>

到 /etc/apache2/sites-enabled/work 并且运行正常。

是的,我知道我应该修复这些通知,但我正在处理一个旧脚本,需要回到那个脚本,现在这已经解决了我的问题,也是 op 所寻找的。希望这对某人有所帮助。

答案3

如果没有 .htaccess 或全局应用配置,则无法实现此目的。Apache 无法“查看”其根文件夹 (htdocs) 之外的文件,并且 .htaccess 文件仅在站点文件夹中有效。php_flag 在 .htaccess 之外也不起作用。

因此,基本上,如果不进行网站间协作,就不可能一些修改或 .htaccess 文件。

相关内容