禁用 PHP 弃用警告和通知

sti*_*vlo 6 linux php php.ini apache-2.2

我一直在使用和配置PHP,但现在我遇到了一个奇怪的问题,所以我要向你们寻求帮助。

我不想在生产服务器中看到弃用警告和通知,但是我想看到其他错误消息,例如语法错误。

我在 Ubuntu 10.10 上使用 Suhosin-Patch 运行 PHP 5.3.3-1ubuntu9.3

在我的/etc/php5/apache2/php.ini我有以下几行:

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

我已经重新启动了网络服务器。在虚拟主机配置中,没有 php_admin_value 与此配置混淆,文件夹中没有任何 .htaccess 文件。

尽管如此,仍会显示弃用警告和通知。

sti*_*vlo 8

首先我要感谢binfalse回答这个问题,但是他的建议并没有解决我的问题,并且通知继续显示。

这是因为 PHP 有几个可以设置配置的地方。虽然我知道这些设置的优先级,但我决定通过实验来测试它们,以确保我在这个答案中要说的话。

所以这里是这些地方的列表,从更全球化的到更具体的。列表中较低的每个设置都可以覆盖之前的设置。

  1. php.ini配置文件。在 Ubuntu 的情况下有两个,/etc/php5/apache2/php.ini 是用于 php apache 模块的一个。它将对所有虚拟主机产生全局影响。

  2. conf.d 目录。实际上并非所有安装都具有这种模块化配置,但在 Ubuntu 的情况下,apache 模块位于 /etc/php5/apache2/conf.d 中。在这个目录中添加的任何文件都将被添加到主 php.ini 配置中,其优先级高于 php.ini。换句话说,这里的任何设置都将覆盖 php.ini 中的设置 - 我测试添加了一个 error.ini。它将对所有虚拟主机产生全局影响。

  3. Apache 虚拟主机配置。一般设置在/etc/apache2/sites-available中,每个虚拟主机可以有不同的设置。在 VirtualHost 标签中,可以包含“php_value error_reporting”,其中 value 是对常量进行布尔运算的数字结果。在这种配置中,实际上是不允许使用助记常数而只允许使用一个数值的。它只会影响单个虚拟主机。它将覆盖上述设置。

  4. .htaccess。也可以在 .htaccess 中设置配置值,特别是 error_reporting 设置,使用与 3 中描述的相同的语法。它只会影响 .htaccess 所在的目录和所有子目录。它将覆盖上面的设置,在这种情况下不需要重新启动 apache。

  5. 源代码。最后一个可以更改此设置的地方是直接在执行的 PHP 源代码中。如果使用,将覆盖所有以前的设置,这正是我所面临的。它可以通过调用函数“error_reporting()”或“ini_set("error_reporting", )”来设置。编译错误仍可能显示,因为在这种情况下不会执行脚本。


小智 5

将变量设置/etc/php5/apache2/php.ini

error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
Run Code Online (Sandbox Code Playgroud)

这只会显示错误。