php7.0不支持xml,升级PHP7导致的sitemap.xml无法更新问题解决记录

问题

升级PHP7之后,点击wordpress后台Baidu Sitemap插件中的“update xml file”后没有效果,且网页空白,通过F12大法查看到有文件500错误

74788b13b500c0e22889319a3051dac4.png

d97e4f4f3c834e5abf672d08e154e2dd.png

解决-日志查看

首先监控apache的该站点错误日志,刷新页面重新提交,查看是否有错误日志刷新

tail -f cloudcared.cn/cloudcared.cn-error_log

刷新后无新日志生成,则该错误不是apache问题导致

监控PHP日志

tail -f /var/log/php-fpm/www-error.log

4af19d69d041628e19f2dd744605ecfe.png

可以清楚的看到网页刷新后,PHP报出了不支持的函数类型错误,查看该对应的PHP文件,并修改split函数

定位至439行

list( $today_year, $today_month, $today_day, $hour, $minute, $second ) = split( '([^0-9])', $blogtime );

修改为:

list( $today_year, $today_month, $today_day, $hour, $minute, $second ) = preg_split( '([^0-9])', $blogtime );

再次尝试更新xml文件

b4fb85f4b07b96cd9b77debc887a54be.png

总结

通过相关资料查看后得知:

PHP 的 split()非常方便, 但是 PHP 5.3.0 后,不建议再使用 split(), 在使用上会出现警告信息,甚至错误。

所以下述是不建议使用的 Function (POSIX), 与建议替换成的 Function (PCRE) 列表

POSIX → PCRE

ereg_replace() → preg_replace()

ereg() → preg_match()

eregi_replace() → preg_replace()

eregi() → preg_match()

split() → preg_split()

spliti() → preg_split()

sql_regcase() → No equivalent

PHP split() 替代方案

需要 regex 的 split, 可用 preg_split ()代替

不需要 regex, 只要要快速分割固定的字串, 可用 explode()代替. (速度会比需要 regex 的快很多)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值