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_
调用,我们必须创建一个 mute.php
文件:
<?php
set_error_handler(function($errno, $errstr){
return strpos($errstr, 'mysql_') === 0;
}, E_DEPRECATED);
并在 apache 配置中添加以下行:
php_value auto_prepend_file mute.php
关于php - 为 apache 日志静音 PHP mysql_* deprecated 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22355142/