如何通过PHP配置忽略WordPress在SartajPHP下的精度丢失错误?
解决方案
1. 调整PHP错误报告,忽略弃用警告
这个错误本质是PHP 8.0+对「浮点转整数丢失精度」抛出的E_DEPRECATED级警告(错误码8192),但SartajPHP将其升级为了致命错误。你可以通过以下方式忽略这类警告:
- 修改PHP.ini配置:找到PHP配置文件,修改
error_reporting项:
修改后重启Web服务器生效。error_reporting = E_ALL & ~E_DEPRECATED - 运行时动态设置:在SartajPHP的入口文件(或WordPress加载前的初始化代码中)添加:
error_reporting(E_ALL & ~E_DEPRECATED);
2. 切换为64位PHP环境
问题根源是32位PHP的最大整数为2147483647,0xFFFFFFFF(即4294967295)超出该范围,会被转为浮点数,进而在类型转换时丢失精度。换成64位PHP后,该值可被正常识别为整数,不会触发错误,且无需修改任何代码。
3. 调整SartajPHP的错误处理规则
单独运行WordPress时无此问题,说明是SartajPHP的错误处理逻辑将E_DEPRECATED警告提升为致命错误。检查框架的配置文件,找到错误级别或错误处理的相关设置,将E_DEPRECATED从致命错误列表中移除即可。
4. 用WordPress必须使用插件(MU-Plugin)绕过核心代码
如果不想修改WordPress核心文件,可通过MU-Plugin实现逻辑修正:
- 在WordPress的
wp-content/mu-plugins目录下创建fix-pomo-magic.php文件; - 利用PHP反射或runkit扩展重写
POMO_MO类中的对应逻辑(该方式需要一定技术基础,若嫌复杂优先考虑前三种方案)。
内容的提问来源于stack exchange,提问作者Raju Raja
相关产品推荐
相关产品推荐

