更改 php 错误报告以仅隐藏特定站点的警告 [Debian|Ubuntu]

Red*_*dro 7 ubuntu php apache-2.2

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

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

通常有几个解决方案来实现一些相关的:

  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);
    
    Run Code Online (Sandbox Code Playgroud)
  4. 前置@到抛出警告或错误的函数。

  5. 更改php.ini到实说
    error_reporting = E_ALL ^ E_WARNING
    display_errors = 1

然而,这些都意味着接触 htdocs 或全局应用更改。想象一下,htdocs它们以只读方式安装。我将如何仅抑制某些站点的警告(或通知)?

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

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

也可以看看:

eta*_*klo 13

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

在您的虚拟主机中添加如下内容:

<IfModule mod_php5.c>
    php_admin_flag display_errors off
</IfModule>
Run Code Online (Sandbox Code Playgroud)

编辑:

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

<IfModule mod_php5.c>
    php_admin_flag display_errors on
    php_admin_value error_reporting 22517
</IfModule>
Run Code Online (Sandbox Code Playgroud)

这相当于一个设置

error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED;
Run Code Online (Sandbox Code Playgroud)

在 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