Wordpress仍在使用不推荐使用的mysql_*
函数,因此Apache的error.log
文件正在膨胀。
是否有可能忽略这些特定警告,因此不会显示特定项目的mysql_*
弃用错误?
例如,使用一些.htaccess
条目或PHP函数。
答案 0 :(得分:4)
调整错误报告级别以隐藏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
答案 1 :(得分:0)
您可以隐藏所有已弃用的警告,但我不认为您只能避免使用mysql_ *。
要禁用它,请在PHP脚本中使用它(如果此脚本中只有与mysql_ *相关的代码,那么更好,这样您就不会丢失任何其他已弃用的信息):
error_reporting(E_ALL ^ E_DEPRECATED);