gpt4 book ai didi

php - 为 apache 日志静音 PHP mysql_* deprecated 错误

转载 作者:可可西里 更新时间:2023-11-01 01:01:53 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com