WordPress仍在使用不推荐使用的mysql_ *函数,因此Apache的error.log文件正在膨胀.
是否有可能以某种方式忽略那些特定的警告,因此不会显示特定项目的mysql_ *弃用错误?
例如,带有一些.htaccess条目或PHP函数.
解决方法:
调整错误报告级别以隐藏E_DEPRECATED的内容可能不是最佳选择,因为您将失去在自己的代码中查看该信息的能力.而且PHP没有提供足够的粒度来按功能或库过滤掉不推荐使用的通知.恐怕您唯一的选择是编写自己的custom error handler.
(免责声明:我不知道WordPress是否也实现了自定义错误处理程序.如果这样做,则必须小心以免破坏它.)
如果您以前从未做过,那可能会很棘手.除其他事项外,您需要确保遵守error_reporting和@运算符,并且必须在必须时中止.无论如何,一个简化且未经测试的起点可能是:
function ignore_mysql_deprecated($errno, $errstr, $errfile, $errline){
if( $errno===E_DEPRECATED && preg_match('/^mysql_.+\(\): The mysql extension is deprecated and will be removed in the future/U', $errstr) ){
// Ignore
return true;
}else{
// Call standard error handler
return false;
}
}
set_error_handler('ignore_mysql_deprecated');
如果WordPress不提供更改错误处理程序的标准机制,则始终可以使用auto_prepend_file指令插入此代码.
经过测试的解决方案
要使您项目中的任何mysql_调用静音,我们必须创建一个Mutate.php文件:
<?php
set_error_handler(function($errno, $errstr){
return strpos($errstr, 'mysql_') === 0;
}, E_DEPRECATED);
并在以下行中添加apache配置:
php_value auto_prepend_file mute.php