WordPress“无法将上传的文件移动至wp-content/uploads/”的解决办法

温馨提示:本文最后更新于2025-07-16 08:53:29,某些文章具有时效性,若有错误或下载地址失效,请在文末评论区留言

今天十一张(www.11zhang.com)迁移了 WordPress 站点至新服务器,结果上传图片出现“无法将上传的文件移动至wp-content/uploads/”的错误提示,如下图,这是怎么回事呢?

图片[1]-WordPress“无法将上传的文件移动至wp-content/uploads/”的解决办法-十一张

你会发现,只需将 wp-content/uploads/ 目录的权限改成777就能解决问题,但是这样比较粗暴,可能会带来新的安全问题(黑客可能上传恶意脚本,如PHP shell)。

图片[2]-WordPress“无法将上传的文件移动至wp-content/uploads/”的解决办法-十一张

原因分析

当你在 WordPress 站点中遇到“无法将上传的文件移动至wp-content/uploads/”的错误时,这表明Web服务器进程(如Apache或Nginx的PHP处理进程)对 wp-content/uploads/ 目录缺少写入权限。因WordPress 站点在上传文件时,Web服务器(通常是Apache或Nginx)需要具有对上传目录的写权限。

在755权限下:所有者(owner)有读、写、执行(rwx)权限,而组(group)和其他用户(others)只有读和执行权限(r-x),没有写权限

然而,Web服务器进程(如Apache的www-data用户或Nginx的nginx用户)通常不是该目录的所有者,除非特别配置。所以,如果Web服务器进程不属于目录的组(且也不是所有者),那么它就没有写权限。因此,当目录权限是755时,上传会失败。当权限改为777时,所有用户(包括Web服务器进程)都有写权限,因此可以上传。

但是,777权限是不安全的,因为任何用户都可以在该目录中写入文件,这可能导致安全风险(例如,被恶意用户上传恶意脚本)。

●755权限:目录所有者有完全权限,但Web服务器通常不是所有者,因此无法写入。
●777权限:所有用户可写,解决了写入问题但引入严重安全风险(允许任意用户修改文件)。

解决方案(无需777权限)

确定Web服务器运行的用户,例如,对于Apache,通常是www-data;对于Nginx,可能是www或nginx。将上传目录的所有权更改为Web服务器用户,或者确保该目录的组是Web服务器用户所在的组,然后将组权限设置为可写(775),并确保Web服务器用户在该组中。具体操作步骤:

1、先检查文件权限,确保 wp-content/uploads 目录及其子目录的权限为755,你可以使用以下命令设置755权限:

chmod -R 755 /www/wwwroot/www_11zhang_com/wp-content/uploads

2、确保 wp-content/uploads 目录的属主和属组正确,可以使用以下命令设置:

sudo chown -R www:www /www/wwwroot/www_11zhang_com/wp-content/uploads
图片[3]-WordPress“无法将上传的文件移动至wp-content/uploads/”的解决办法-十一张

PS:如果用户不知道Web服务器的用户是谁,可以通过以下方法查看:

●对于Apache:在终端执行 ps aux | grep apache 或 ps aux | grep httpd 命令查看第一列
●对于Nginx:在终端执行 ps aux | grep nginx 命令查看第一列

图片[4]-WordPress“无法将上传的文件移动至wp-content/uploads/”的解决办法-十一张

通常,主进程会以root运行,但工作进程会以www、nginx等用户运行。

© 版权声明
THE END
如果觉得这篇文章对您有帮助,可以收藏本网址,方便下次访问!
点赞16 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容