无法通过Wordpress上传器上传媒体

时间:2010-06-04 03:44:45

标签: wordpress upload permissions

这与在Wordpress中上传媒体有关。

每当WP为新上传创建一个文件夹(它按年和月组织上传:yyyy / mm)时,它会使用“apache:apache”用户和组创建它,并且可以完全访问所有(777或{{ 1}})。

然而,在此之后,WP无法在该文件夹中创建文件夹(例如:mkdir drwxrwxrwx成功,但mkdir 2011失败)。此外,即使权限为777(2011/01),也无法将上传内容移动到这些新创建的文件夹中。

每月一次,我必须rwxrwxrwx新创建的文件夹与user:group相同,作为其余文件。一旦我这样做,上传工作正常(这对我没有意义)真正令人沮丧的是,在同一台服务器上的其他域上的其他WP安装中不存在此问题。

*我不确定这应该在这里还是在服务器故障上。


编辑:包含目录chown拥有正确的所有权

/.../httpdocs/blog/wp-content/uploads

这是由Media Temple(dv)主办的Plesk / CentOS环境。

我编写了以下测试脚本来模拟问题

drwxrwxrwx 5 myuser psaserv 4096 Jun  3 18:38 uploads

脚本始终成功创建第一个目录<pre><?php $d = "d" . mt_rand(100, 500); var_dump( get_current_user(), $d, mkdir($d), chmod($d, 0777), mkdir("$d/$d"), chmod("$d/$d", 0777), fileowner($d), getmyuid() ); 。在WP问题所在的域A上,它无法创建嵌套目录mkdir($d)。但是,在域B上,两个目录都已成功创建。

我分别在mkdir("$d/$d")/var/www/vhosts/domainA/httpdocs/tmp/t.php运行每个脚本我检查了/var/www/vhosts/domainB/httpdocs/tmp/t.phptmphttpdocs的权限,它们是相同的每条路。唯一不同的是用户。

9 个答案:

答案 0 :(得分:3)

解决方案是使用FastCgi。这使得PHP作为拥有该站点的用户运行。新文件和文件夹将是同一个用户和组。这将解决您的问题。

FastCgi存在性能损失,但是由于它限制了php,因此您获得了一些额外的安全性。如果您托管多个用户的多个网站,这可能是一个好主意。

答案 1 :(得分:2)

尝试转到杂项设置页面(或根据您的版本使用媒体),并确保上传目录仍为wp-content / uploads。

如果你需要。设置完整的网址。

此外,作为最终解决方案,禁用将它们组织到文件夹中的选项,这样WordPress甚至不需要创建文件夹。

答案 2 :(得分:1)

检查2010目录上方目录的setuid或setgid位。 ls -l将在目录的权限中具有s或S.确保此目录具有正确的所有权。

答案 3 :(得分:1)

尝试使用mkdir($d, true)

创建目录递归
<pre><?php 

$d = "d" . mt_rand(100, 500);

var_dump(
         array(
               get_current_user(),
               $d,
               mkdir($d,true),
               chmod($d, 0777),
               mkdir("$d/$d", true),
               chmod("$d/$d", 0777),
               fileowner($d),
               getmyuid()
              )
        );

答案 4 :(得分:1)

最近我和Joomla有类似的问题,并通过将myuser添加到apache组来解决问题,并将apache添加到psaserv组。

答案 5 :(得分:1)

我们在Media Temple DV上的一个网站遇到了这个问题。关闭PHP安全模式解决了它。这些目录仍然被创建为apache:apache,但是那里允许使用媒体文件。

答案 6 :(得分:1)

我发生了一件事 - 即使所有权限都正确,WP也会告诉您它无法将文件复制到/wp-content/upload ....如果

  

upload_max_filesize

php.ini中的

太小(比如2M,你尝试上传3.5MB文件)!

希望能帮助所有拥有正确权限但仍无法上传的人!

答案 7 :(得分:1)

你的目录上不需要777,最多775就足够了。只需确保它在上传目录中设置为755,用于上面的所有其他目录。

此外,您可以尝试将其添加到www-data,有时这有助于当您每月更改一次权限时登录的ftp用户没有足够的访问级别并且拥有该用户的目录时阻止服务器写入它们。

最后,正如有人在上面指出的那样,您可能需要提高上传大小限制,同时确保其他文件上传相关的php.ini设置正确无误:

http://php.net/manual/en/ini.core.php

http://kb.mediatemple.net/questions/137/How+can+I+edit+the+php.ini+file%3F#dv

答案 8 :(得分:1)

经常被忽视的一个常见原因是磁盘配额,即磁盘空间不足。