WordPress 出现 temp-write-test:权限/缓存/安全插件怎么查

当你在 wp-content/ 里看到一堆 temp-write-test-*(通常是 0 字节)文件,基本可以判断:这是 WordPress 在判断“能不能直接写入文件系统”时创建的测试文件。WordPress 的 get_filesystem_method() 会用 temp-write-test-... 做写入与属主检测,用来决定采用 direct 还是需要 FTP/SSH 方式更新插件与主题。

下面按“10 分钟定位”的方式,把问题收敛到三大类:权限/属主缓存目录写入安全/防篡改拦截

1. WordPress 出现 temp-write-test 是什么,它在测试什么?

WordPress 出现 temp-write-test的流程示意

你看到的 WordPress 出现 temp-write-test,本质是 WordPress 的文件系统 API 在做能力探测:

  • 能否在指定目录写入临时文件
  • 写入后的文件属主(owner)是否与 WordPress 文件属主一致
  • 从而判断是否可以安全使用 direct 写入更新文件

如果这个测试失败,常见连带现象是:后台更新时弹出“请输入 FTP 信息”、更新失败、站点健康(Site Health)提示临时目录不可写等。

2. 先用一张表快速判断你属于哪一类

你看到的现象更可能的原因优先检查点
更新插件/主题时要求 FTPWordPress 无法判定 directwp-content 可写、属主一致、FS_METHOD 检测
wp-content 里 temp-write-test 越来越多写入测试反复触发且失败权限/属主不对,或被防篡改拦截
只要清缓存就报错或生成 temp-write-test缓存插件需要写目录wp-content/cacheuploads 权限与属主
开了安全/面板“防篡改/只读”后立刻出现写入被拦截安全插件、面板防篡改、文件 immutable、SELinux

3.10 分钟排查清单(按顺序做,命中率最高)

第 1 步(1–2 分钟):确认 temp-write-test 的触发点

回忆你最近做了什么操作后开始出现 WordPress 出现 temp-write-test

  • 更新插件/主题、在线安装插件
  • 站点健康里点了修复/检测
  • 启用/切换缓存插件(或开启了页面缓存)
  • 开启安全插件的“防篡改/文件锁定/只读”功能

这一步的意义是:触发点能直接把你带到“权限/缓存/安全”其中一条路径。

第 2 步(2–4 分钟):检查 wp-content 的属主与权限是否合理

WordPress 官方文档给出了文件权限排查方向(不同环境略有差异,但常见建议是目录可读可执行、文件可读;不要随意 777)。

在服务器上执行(把路径换成你的站点目录):

ls-ld wp-content wp-content/uploads wp-content/plugins wp-content/cache 2>/dev/null

重点看两点:

  1. 运行 PHP 的用户是谁(php-fpm 常见是 www-data / nginx / apache
  2. wp-content 及其关键子目录是否对这个用户可写
通过 ls -ld 查看 wp-content 权限与属主,定位写入失败原因

如果你是 Nginx + PHP-FPM,可以这样看 PHP-FPM 的运行用户(不同发行版路径不同):

ps aux | grep php-fpm | head

典型修复思路(选一种适合你环境的)

  • 站点文件属主本来就应该是某个站点用户:把 wp-content 的属主/属组改回站点用户,并确保 PHP 用户对相关目录有写权限(同组写)。
  • 你是单站 VPS 且明确 PHP 用户负责写入:把 wp-content 的属主改为 PHP 用户更直接。

关键不是“改成谁”,而是:WordPress 写入测试创建的文件属主能匹配 WordPress 文件属主,否则就会继续失败并生成 temp-write-test。

第 3 步(4–6 分钟):排查“缓存目录写入失败”

很多缓存插件会在 wp-content/cache/uploads/ 写入缓存文件。目录不可写时,你可能会看到写入失败、甚至引发 WordPress 反复探测文件系统能力,从而出现 WordPress 出现 temp-write-test

缓存插件写入目录示意:wp-content/cache 与 uploads 需可写

你可以做两个快速验证:

  • 暂时停用缓存插件(只停用,不卸载),看 temp-write-test 是否停止增长
  • 手动检查这两个目录是否可写:wp-content/cachewp-content/uploads

如果停用缓存后不再新增,基本就是缓存目录权限/属主问题,修好目录写权限即可。

第 4 步(6–8 分钟):排查安全插件/面板“防篡改”拦截

很多安全插件或面板会提供“网站防篡改/只读保护”。这类功能最容易把 WordPress 的写入测试直接拦掉,导致 WordPress 出现 temp-write-test 反复生成

安全插件或面板防篡改导致写入被拦截,触发 temp-write-test

按优先级检查:

  • 面板是否开启“防篡改/只读/网站加固(禁止写入)”
  • 安全插件是否开启“文件锁定/阻止文件变更”
  • Linux 文件是否被加了 immutable(只读锁): lsattr wp-content 2>/dev/null 如果看到 i 标记,需要先解除(这一步要非常谨慎,确认你知道自己在做什么)

另外,有些站点会在 wp-config.php 里开启禁止在线修改:

  • DISALLOW_FILE_MODS 会禁用插件/主题安装与更新,并同时影响后台文件编辑入口
    它不一定直接造成 temp-write-test,但会让你误以为“权限问题”,所以建议你顺手核对一下。

第 5 步(8–10 分钟):必要时用 FS_METHOD 做“临时止血”,再回头治本

WordPress 允许用 FS_METHOD 覆盖自动检测结果,可选值包含 direct/ssh2/ftpext/ftpsockets
如果你确认服务器权限/属主其实没问题,但 WordPress 仍误判(比如容器/挂载盘属主表现异常),可以临时在 wp-config.php 加:

define('FS_METHOD', 'direct');

注意:官方建议是“只在更新问题时使用;如果无效要移除或改回”。
更稳妥的做法仍然是把 wp-content 的写入权限与属主关系修正确。

4. 总结:

WordPress 出现 temp-write-test 本质是系统在检测是否能直接写入文件,用来决定插件/主题更新方式。排查时优先按三条主线走:先看 wp-content 及 uploads/cache 的权限与属主 是否可写且一致;再看 缓存插件 是否因目录不可写反复触发写入测试;最后检查 安全插件或面板防篡改/只读 是否拦截了写入。把根因修好后,这些临时文件可以清理,若仍持续生成,就说明写入测试还在失败,需要回到权限、缓存与安全拦截继续定位。


联系我们
教程看不懂?联系我们为您免费解答!免费助力个人,小企站点!
客服微信
客服微信
电话:020-2206-9892
QQ咨询:1025174874
邮件:info@361sale.com
工作时间:周一至周五,9:30-18:30,节假日休息
© 转载声明
本文作者:Abby
THE END
喜欢就支持一下吧
点赞72 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容