当 PHP 作为 Apache 模块运行时,您可以php.ini
使用 Apache 配置文件中的指令访问/更改任何可用的配置设置。这些指令是...
php_value
php_flag
php_admin_value
php_admin_flag
php_*
和版本之间的差异php_admin_*
是这个问题的关键。使用php_admin_value
和php_admin_flag
只能在 Apache 全局和 VirtualHost 配置中设置的值;它们不能被 .htaccess 或 ini.set() 覆盖。
该error_reporting()
函数相当于一个ini_set()
调用,并且属于相同的规则。
所以我进入了相关站点的虚拟主机配置,并添加了以下几行......
php_admin_value error_reporting 22527
php_admin_value error_log /custom/log/path/php_errors.log
php_admin_flag log_errors On
php_admin_flag display_errors Off
第一行是 的按位值error_reporting = E_ALL & ~E_DEPRECATED
。我通过创建一个简单的脚本来检索这个值:
ini_set("error_reporting", E_ALL & ~E_DEPRECATED);
echo ini_get("error_reporting");
如果您想忽略系统通知以及弃用警报 -error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
按位值是22519
.
第二行将所有 PHP 错误发送到自定义日志。默认情况下,PHP 将使用该syslog
值,通常/var/log/apache2/error.log
或类似的值。
第三行启用文件日志记录。
最后一个关闭页面错误显示。
同样,操作的优先级和顺序在这里很关键。这些值取代 中定义的值php.ini
,同时不能被应用程序或.htaccess
文件中的其他更改覆盖。
有关在 php.ini 之外更改配置值的更多详细信息,请参阅PHP 文档。