图片上传出现问题:“上传的文件无法移动到wp-content/uploads/2015/01。”。

25

我正在从两个月前开始处理一个WordPress网站,并上传了许多图片,但是在上传图片时遇到了错误。在新年后,我面临了以下问题:无法将上传的文件移动到wp-content/uploads/2015/01。

以下是屏幕截图:The uploaded file could not be moved WordPress


3
检查目录的权限和所有者。 - violator667
是的,我已经创建了2015/01,但问题仍然存在。 - Kesar Sisodiya
1
如果您创建了文件夹,那么很可能Web服务器无法访问它。删除该文件夹,并让服务器使用正确的权限自动创建它。 - ceejayoz
我已经做了,但服务器没有自动创建,还有其他的想法吗? - Kesar Sisodiya
1
我不知道如何做,你能在回答中解释一下吗? - Kesar Sisodiya
显示剩余6条评论
14个回答

25

本文很好地解释和解决了这个问题:http://2surge.com/how-to-fix-the-uploaded-file-could-not-be-moved-to-wp-content-error-message

基本前提是运行您的httpd / apache / web服务器线程的进程标识必须具有对上传目录的写访问权限。

要解决此问题:

  1. 检查您的Web服务器正在运行的帐户

    更新:Unix上使用...

    ps aux | egrep '(apache|httpd)'

    ... 这将显示Web服务器的进程列表以及其运行的进程标识,例如“nobody”

    nobody 8718 0.1 0.4 1332864 17180 ? Sl 17:11 0:06 /usr/local/apache/bin/httpd -k start -DSSL

  2. 将上传目录的权限更新为允许该帐户对其进行写入操作。

    更新:在Unix上,您可以使用...

    chown -R nobody /<path to upload directory>/wp-content/upload/

    您还可以更改此帐户(在所需位置)的权限以确保其具有写入权限,使用chmod或Filezilla对目录进行级联更改。

请查看链接的文章以获取详细说明。希望能对您有所帮助! :)


这是一个不好的解决方案,你不应该将任何文件或目录的所有权交给任何人,而是应该更改运行Web服务器进程的用户。 - Omtara
@Omtara - 请注意,“nobody”仅是一个示例,而不是建议正确实现凭据的。本答案的重点是将权限正确地归属于仅访问上传目录的帐户。请随意为此答案做出贡献。 - Matt Woodward

15

这适用于我。

$ sudo chown -R _www uploads/
$ sudo chmod -R g+w uploads/

我假设你现在在 wp-content 目录下。


11

你只需要给PHP写入uploads文件夹的权限,这对我有用:

sudo chown -R www-data <path>/wp-content/uploads

6
我已经搜索并发现问题来自服务器提供商。
通常,所有文件应该由您的用户(ftp)帐户拥有,并且应该可写。在共享主机上,文件永远不应该由Web服务器进程本身拥有(有时这是www、apache或无人用户)。
WordPress需要写入访问权限的任何文件都应该由WordPress使用的用户帐户拥有或属于相应的用户组。例如,您可能有一个用户帐户,允许您在服务器和FTP之间传输文件,但是您的服务器本身可能使用单独的用户在单独的用户组中运行,例如dhapache或nobody。如果WordPress作为FTP帐户运行,则该帐户需要具有写访问权限,即文件的所有者,或者属于具有写访问权限的组。在后一种情况下,这意味着权限设置比默认设置更加宽松(例如,对于文件夹而言是775而不是755,对于文件而言是664而不是644)。 您可以在此处查看如何更改文件权限。

我正在使用IIS托管服务,所以我不知道如何解决这个问题。但是有趣的是,在此之前我上传照片到WordPress没有任何问题。我也无法更新WordPress。但是在过去几周里,我没有遇到任何问题。 - anrequete

4
如果您正在使用带有SELinux的操作系统(例如Fedora或CentOS),您还需要设置SELinux权限。假设您的目录名为uploads(例如)。
chcon -R -t httpd_sys_rw_content_t uploads

这将把 uploads 目录及其下的所有文件设置为可上传到网络服务器用户。

2

可能是因为权限不足,无法创建/uploads/2015文件夹。

检查该文件夹是否存在,如果存在,则检查/uploads/2015/1/是否存在。

权限:

chmod 755 /uploads/2015/1/
chown www-data:www-data /uploads/2015/1/

这些文件夹应该具有与 /uploads/ 文件夹相同的权限。同时检查 error_log,因为它应该会准确地显示哪个文件夹引起了问题。

1
我现在上传了/2015/01,但请解释一下chown www-data:www-data是什么意思,以及我在哪里可以找到error_log - Kesar Sisodiya
您不能假定www-data用户在他的服务器上是正确的所有者。 - violator667
1
好的,Violator现在我知道了,那么error_log是什么,我在哪里可以找到它? - Kesar Sisodiya
2
也许你应该先阅读一些关于权限的内容 - 因为你不理解正在发生什么 :) http://www.linux.com/learn/tutorials/309527-understanding-linux-file-permissions - violator667

1

这对我有效

sudo chown -R www-data html

假设当前目录为www
Ubuntu 16.04,Apache2

0

这个解决方案仅适用于使用cPanel控制面板的用户,您必须为其他面板(如aaPanel、Directadmin等)测试此解决方案... 在进行更改之前,请务必从服务器中拍摄快照/检查点。

通过Easy Apache安装mod_suphp模块。 从MultiPHP Manager部分安装后: 在PHP Handler列下拉菜单中选择suphp 最后,应用更改。

再次测试,如果需要,请输入以下命令:

/usr/local/cpanel/bin/rebuild_phpconf –current

0

这种错误出现的原因有多种

主要问题是文件夹权限。

wp-content/upload/

文件夹权限必须为775或664。

如果错误未得到解决,请尝试以下其他解决方案

进入Cpanel并找到您的网站文件夹,或使用FTP。

然后您将获得wp-config.php {此文件位于根文件夹中}

在其中进行以下更改

Open the wp-config.php file and add the following code:
define( 'UPLOADS', 'wp-content/uploads' );
before below line
require_once(ABSPATH . 'wp-settings.php');

希望这可以帮到你。它对我在 Plesk Hosting 上很有帮助。


0

我也遇到了这个问题,后来发现是因为托管帐户的磁盘配额已超过限制。

我发现有一个旧脚本正在记录错误,而错误日志变得如此之大,以至于填满了可用配额。

当我尝试使用FTP创建新目录时,服务器响应是“磁盘配额已超过限制”,我最终弄清楚了原因。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接