更改php错误报告,只隐藏特定网站的警告

想象一下,可以从/etc/apache2/sites-available sites-enabled一些sites-enabled 。 (只有基于Debian的发行版才能这样工作。)

是否有可能从一个特定的站点的 PHP脚本静音warning消息,而不触及实际的htdocs

通常有几个解决scheme来实现相关的:

  1. 添加一个error_reporting()指令,例如error_reporting(E_ERROR); 到执行的脚本。
  2. .htaccess文件中设置php_flags,如下所示: 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是只读的。 我将如何压制某些网站的警告(或通知)?

我假设Debian / Ubuntu有a2ensite特定的configuration,有一个原因,我希望我可以改变这些。 示例“站点可用”configuration中有一个log_level指令,但是这处理了logging的消息数量。 不是由PHP脚本输出的消息。

手动添加部分在php.iniapache2.confhttpd.conf也将工作。 如果可能。

也可以看看:

  • http://www.php.net/manual/en/function.error-reporting.php

如果您有权访问apache vhostconfiguration,当然您也可以在sites-available目录中的虚拟主机中使用php_flag指令。 这样,他们只适用于这个虚拟主机。

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

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

编辑:

如果你只想显示实际的错误,你可以使用php指令error_reporting和一个整数值来描述你想要显示的错误级别的types:

 <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

没有.htaccess或全局应用configuration没有办法做到这一点。 Apache不能在根文件夹(htdocs)之外“查看”文件,而.htaccess文件只能在站点文件夹中使用。 php_flag在.htaccess之外也不起作用。

所以基本上,没有一些修改或.htaccess文件是不可能的。

我补充说:

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

到/ etc / apache2 / sites-enabled / work,那工作得很好。

是的,我知道我应该修改这些通知,但是我正在写一个旧的脚本,需要回到这个脚本,因为现在这已经解决了我的问题,并且正在寻找这个脚本。 希望这有助于某人。