WAMP环境下WordPress媒体上传提示超过最大执行时间错误排查
根因定位
从报错栈可以看到超时卡死在clean_dirsize_cache()函数,该函数会递归遍历WordPress上传目录的所有子目录清理缓存,你的问题和安装Homestead & Vagrant高度相关,大概率是该操作修改了本地文件系统权限、目录映射或网络路由,导致WAMP的PHP进程读取上传目录时IO被阻塞,哪怕小文件上传也会因为目录遍历超时。
排查步骤
第一步:确认关联
先完全关闭Vagrant虚拟机并退出Vagrant后台进程,再测试媒体上传功能,如果功能恢复即可确认是Homestead & Vagrant配置冲突导致。
第二步:针对性排查
- 检查目录映射配置:确认WordPress的
wp-content/uploads目录是否被加入了Homestead的共享文件夹列表。如果是,WAMP作为Windows本地服务读取被Vagrant挂载的共享目录时,会因为跨虚拟机文件系统的IO开销过高导致目录遍历卡死,只需将上传目录移出Homestead共享配置,或在WP配置中指定新的本地非共享目录作为上传路径即可。 - 检查网络路由冲突:安装Homestead时会自动修改Windows hosts文件,确认你当前WAMP站点的域名是否和Homestead中配置的站点域名重复,重复会导致上传请求被路由到Vagrant虚拟机而非本地WAMP服务,两边文件系统不匹配导致目录遍历卡死,修改任意一方的站点域名即可解决。
- 检查目录权限配置:Homestead共享目录会被Vagrant自动修改文件所有者与权限,可能导致WAMP的Apache/PHP进程无
wp-content/uploads目录的遍历权限,函数卡在校验权限环节触发超时。可临时给该目录授予Everyone完全控制权限测试,恢复后再将权限调整为WAMP运行账户的读写权限即可。
临时修复方案
如果需要快速恢复上传功能,可在当前主题的functions.php文件中添加以下代码,绕过目录缓存清理逻辑:
add_filter('pre_recurse_dirsize', '__return_null');
内容的提问来源于stack exchange,提问作者JayStone22
相关产品推荐
相关产品推荐

