MAMP环境下WordPress后台PHP错误未显示在主机错误日志中
解决WordPress PHP错误未出现在MAMP和主机日志中的问题
刚踩过几乎一模一样的坑,给你几个实用的排查方向,应该能帮你揪出问题:
1. 先搞定FastCGI报错的根源
你日志里的FastCGI: incomplete headers (0 bytes) received from server这个提示是关键,说明PHP的FastCGI进程要么崩溃了,要么因为超时/内存不足提前终止了:
- 先确认PHP配置是否生效:在WordPress根目录新建一个
phpinfo.php,内容是:
访问这个页面,找到<?php phpinfo(); ?>error_log、log_errors、display_errors这几个配置项,核对error_log是不是指向了你期望的日志文件,同时确保log_errors是On状态。 - 调整PHP的资源限制:打开MAMP对应PHP版本的
php.ini(MAMP里可以通过Preferences -> PHP -> Open php.ini直接打开),把max_execution_time调到60以上,memory_limit调到256M或者更高,保存后重启MAMP的Apache和PHP服务,再触发错误试试。
2. 排查主机日志无更新的问题
如果主机侧的日志完全没动静,大概率是配置没生效或者权限问题:
- 检查配置文件位置:你添加的
php.ini和.user.ini必须放在WordPress的根目录,同时要确保MAMP的Apache配置里开启了AllowOverride All(在httpd.conf里找对应站点的<Directory>块,把AllowOverride设为All),否则.user.ini的配置不会被读取。 - 检查WordPress自身的日志设置:打开
wp-config.php,看看有没有定义WP_DEBUG_LOG。如果之前设置了WP_DEBUG为true但没指定日志位置,错误会默认写到wp-content/debug.log里,而不是系统日志。你可以添加这两行来强制记录到指定文件:define('WP_DEBUG', true); define('WP_DEBUG_LOG', '/path/to/your/custom/error.log'); - 权限是重灾区!PHP进程(MAMP里通常是
_www用户)需要有写入日志文件的权限。你可以用终端执行:
或者至少给日志目录设置755权限,日志文件设置644权限,避免因为权限不足导致日志写不进去。chown -R _www:_www /path/to/your/local-site
3. 用手动触发错误验证配置
最直接的测试方法是手动触发一个PHP错误,比如在WordPress的functions.php里加一行:
trigger_error('Test error for log checking', E_USER_WARNING);
然后刷新网站,再去各个日志文件里找这个测试错误。如果这个测试错误也没出现,那肯定是日志配置或者权限的问题;如果出现了,说明之前的错误可能是没有真正触发,或者是被WordPress的错误处理机制屏蔽了。
内容的提问来源于stack exchange,提问作者Vanya




