禁用PHP弃用警告和通知

我一直在使用和configurationPHP,但现在我陷入了一个奇怪的问题,所以我会问你们的帮助。

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

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

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

error_reporting = E_ALL&〜E_DEPRECATED&〜E_NOTICE

我重新启动了networking服务器。 在虚拟主机configuration中没有php_admin_value这个configuration搞乱,在文件夹中没有任何.htaccess文件。

尽pipe如此,弃用警告和通知仍然显示。

任何人都可以帮忙 先谢谢你!

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

这是因为PHP有​​几个地方可以设置configuration。 当我了解这些设置的优先级时,我决定通过实验来testing它们,以确定我将在这个答案中说些什么。

所以这里列出了从更全球到更具体的地方。 列表中的每个设置都可以覆盖之前的设置。

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

  2. conf.d目录 。 实际上并不是所有的安装都会有这个模块化的configuration,但是Ubuntu的位于/etc/php5/apache2/conf.d中的是apache模块。 此目录中添加的任何文件将被添加到主php.iniconfiguration中,优先级高于php.ini。 换句话说,这里的任何设置都将覆盖php.ini中的设置 – 我testing添加一个error.ini。 它将对所有虚拟主机产生全球影响。

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

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

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

/etc/php5/apache2/php.ini的variables设置为

 error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR 

这只会显示错误。