我一直在使用和配置 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
我重启了网络服务器。在虚拟主机配置中,没有 php_admin_value 与此配置冲突,文件夹中也没有任何 .htaccess 文件。
尽管如此,仍然会显示弃用警告和通知。
答案1
首先我要感谢 binfalse 回答了这个问题,但是他的建议并没有解决我的问题,并且通知仍然继续显示。
这是因为 PHP 有多个可以设置配置的地方。虽然我知道这些设置的优先级,但我还是决定通过实验来测试它们,以确保我在这个答案中要说的内容。
以下是这些位置的列表,从更全局到更具体。列表中较低的每个设置都可以覆盖之前的设置。
php.ini配置文件。在 Ubuntu 中有两个,/etc/php5/apache2/php.ini 是用于 php apache 模块的配置文件。它将对所有虚拟主机产生全局影响。
conf.d 目录。实际上,并非所有安装都具有此模块化配置,但在 Ubuntu 中,apache 模块位于 /etc/php5/apache2/conf.d 中。此目录中添加的任何文件都将添加到主 php.ini 配置中,优先级高于 php.ini。换句话说,此处的任何设置都将覆盖 php.ini 中的设置 - 我测试了添加 error.ini。它将对所有虚拟主机产生全局影响。
Apache 虚拟主机配置。一般在 /etc/apache2/sites-available 中设置,每个虚拟主机可以有不同的设置。在 VirtualHost 标记内可以包含“php_value error_reporting”,其中 value 是常量布尔运算的数字结果。在此配置中,实际上不允许使用助记符常量,而只能使用数字值。它只会影响单个虚拟主机。它将覆盖上述设置。
.htaccess。也可以在 .htaccess 中设置配置值,特别是 error_reporting 设置,使用 3 中描述的相同语法。它只会影响 .htaccess 所在的目录及其所有子目录。它将覆盖上述设置,在这种情况下无需重新启动 apache。
源代码。可以更改此设置的最后一个地方是直接在执行的 PHP 源代码中。如果使用,将覆盖所有以前的设置,这正是我面临的情况。可以调用函数“error_reporting()”或使用“ini_set("error_reporting", )”进行设置。编译错误仍会显示,因为在这种情况下不会执行脚本。
答案2
将变量设置/etc/php5/apache2/php.ini
为
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
这只会显示错误。