前端AJAX调用PHP文件时error_log无输出的原因排查
问题:AJAX请求能收到PHP输出但看不到
error_log日志? 我通过前端JS发起了AJAX请求:
const xhttp = new XMLHttpRequest(); xhttp.open("POST", (window.location.origin + "/wordpress/wp-content/plugins/um-jogging-platform/core/umjp-removeData.php"), true); xhttp.send();
对应的PHP文件umjp-removeData.php代码如下:
<?php error_log('test'); echo 1 + 1;
目前的情况是:能正常收到计算结果2,但始终看不到error_log('test')生成的日志,这是什么原因?
可能的原因及排查方案
- 日志路径不明确:WordPress环境下,
error_log的默认输出位置不一定是你预期的地方。你可以临时在PHP文件里加一行echo ini_get('error_log');,发起AJAX请求后查看返回值,就能精准定位日志文件的位置,避免在错误的文件里白费功夫~ - 错误日志功能未启用:检查PHP配置中的
log_errors是否设为On,以及error_reporting的级别是否足够。你可以在PHP文件开头强制开启日志功能试试:<?php error_reporting(E_ALL); ini_set('log_errors', 1); error_log('test'); echo 1 + 1; - 权限不足:日志所在的目录或文件没有写入权限。服务器的Web进程用户(比如Apache的
www-data、Nginx的nginx用户)需要拥有日志目录的写入权限。可以检查日志目录的权限设置,必要时调整权限。 - 日志缓冲机制:部分服务器的日志会采用缓冲写入,不会实时刷新到文件。你可以等待几分钟,或者重启Web服务(如Apache/Nginx)后再查看日志文件。
- WordPress日志配置覆盖:WordPress自带的日志系统可能会覆盖PHP默认日志设置。可以查看
wp-config.php文件中是否定义了WP_DEBUG_LOG,如果开启了这个配置,日志可能会输出到wp-content/debug.log文件中,不妨去那里找找看。
内容的提问来源于stack exchange,提问作者Willem van der Veen
相关产品推荐
相关产品推荐

