Debian OpenLiteSpeed下WordPress php错误日志不生成及500报错排查
Debian+OpenLiteSpeed运行WordPress发布/更新页面500错误排查与修复
问题现象
Debian系统搭配OpenLiteSpeed运行WordPress站点时,发布、更新页面(对应处理脚本post.php)返回Error 500错误。
前期排查过程
- 执行
php --ini定位php.ini路径,发现配置项display_logs为Off - 参照配置说明修改PHP参数:添加
error_log = /var/log/php_error_log配置,设置error_reporting = E_ALL,将display_errors改为On - 保存配置验证生效后,复现
post.php的500错误,指定路径未生成php_error_log文件,无法确认是否需要手动创建日志、是否遗漏配置步骤 - 补充排查1:在网站根目录创建内容为
<?php phpinfo(); ?>的1.php文件,用于验证Web服务加载的php.ini是否正确,但访问该页面显示空白 - 补充排查2:捕获到完整报错信息:
[STDERR] PHP Fatal error: Uncaught Error: Call to undefined method Normalizer::isNormalized() in /var/www/html/wp-content/plugins/cloudflare/vendor/symfony/polyfill-intl-idn/Idn.php:338 Stack trace: #0 /var/www/html/wp-content/plugins/cloudflare/vendor/symfony/polyfill-intl-idn/Idn.php(163): Symfony\Polyfill\Intl\Idn\Idn::process() #1 /var/www/html/wp-content/plugins/cloudflare/vendor/symfony/polyfill-intl-idn/bootstrap.php(140): Symfony\Polyfill\Intl\Idn\Idn::idn_to_ascii() #2 /var/www/html/wp-content/plugins/cloudflare/src/WordPress/WordPressClientAPI.php(18): idn_to_ascii() #3 /var/www/html/wp-content/plugins/cloudflare/src/WordPress/Hooks.php(148): CF\WordPress\WordPressClientAPI->getZoneTag() #4 /var/www/html/wp-content/plugins/cloudflare/src/WordPress/Hooks.php(442): CF\WordPress\Hooks->purgeCacheByRelevantURLs() #5 /var/www/html/wp-includes/class-wp-hook.php(307): CF\WordPress\Hooks->purgeCacheOnPostStatusChange() #6 /var/www/html/wp-includes/class-wp-hook.php(331): WP_Hook->apply_filters() #7 /var/www/html/wp-includes/plugin.p in /var/www/html/wp-content/plugins/cloudflare/vendor/symfony/polyfill-intl-idn/Idn.php on line 338
报错触发逻辑:Cloudflare插件在文章状态变更时触发缓存清理逻辑,调用未定义方法抛出致命错误。
修复步骤
1. 解决日志不生成、phpinfo页面空白问题
OpenLiteSpeed使用独立的lsphp进程处理Web请求,和系统CLI模式下的PHP是两套独立程序,之前用php --ini查到的是CLI模式的配置文件,不是Web服务实际加载的配置,所以修改后不生效。
- 手动创建日志文件并配置正确权限:
touch /var/log/php_error_log chown www-data:www-data /var/log/php_error_log chmod 644 /var/log/php_error_log
- 重启服务生效配置:
systemctl restart lsws killall -9 lsphp
重启后再访问1.php即可正常显示phpinfo信息,可在页面中确认Web服务实际加载的php.ini路径、已安装PHP扩展列表,后续修改配置要改对应路径下的文件。
2. 修复核心500报错
报错中Normalizer::isNormalized()方法属于PHP的intl扩展,当前环境未安装该扩展导致Cloudflare插件调用失败:
- 安装对应PHP版本的intl扩展,先在OpenLiteSpeed WebAdmin控制台确认当前站点使用的PHP版本,以PHP8.1为例:
apt update apt install php8.1-intl
- 验证扩展是否安装成功,替换命令中的lsphp路径为实际版本路径:
/usr/local/lsws/lsphp81/bin/php -m | grep intl
命令返回intl即为安装成功。
- 再次重启OpenLiteSpeed和lsphp进程:
systemctl restart lsws killall -9 lsphp
- 验证功能:可先临时禁用Cloudflare插件,测试发布、更新页面是否恢复正常,再重新启用插件,确认文章更新时的缓存清理逻辑可正常执行,不再抛出500错误。
内容的提问来源于stack exchange,提问作者Gary Oak
相关产品推荐
相关产品推荐

