Это связано с загрузкой мультимедиа в Wordpress.
Каждый раз, когда WP создает папку для новых загрузок (она организует загрузки по годам и месяцам: гггг / мм), он создает ее с помощью пользователя и группы «apache: apache» с полным доступом ко всем (777 или * 1003). *).
Однако после этого WP не может создать папку в этой папке (например, mkdir 2011
успешно, но mkdir 2011/01
не удается). Кроме того, загружаемые файлы нельзя перемещать в эти вновь созданные папки, даже если для них установлены разрешения 777 (rwxrwxrwx
).
Раз в месяц мне нужно chown
, чтобы вновь созданные папки были такими же, как user: group, как и остальные файлы. Как только я это делаю, загрузка работает нормально (что для меня не имеет смысла. Действительно расстраивает то, что эта проблема не существует в других установках WP в других доменах на том же сервере.
* Я не был уверен, должно ли это быть здесь или на сервере.
Редактировать: содержащий каталог /.../httpdocs/blog/wp-content/uploads
имеет правильное владение
drwxrwxrwx 5 myuser psaserv 4096 Jun 3 18:38 uploads
Это среда Plesk / CentOS, размещенная в Media Temple (dv).
Я написал следующий тестовый скрипт для имитации проблемы
<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()
);
Сценарий всегда успешно создает первый каталог mkdir($d)
. В домене A, где проблема WP, он не может создать вложенный каталог mkdir("$d/$d")
. Однако в домене B оба каталога успешно созданы.
Я запускаю каждый скрипт на /var/www/vhosts/domainA/httpdocs/tmp/t.php
и /var/www/vhosts/domainB/httpdocs/tmp/t.php
соответственно. Я проверил разрешения для tmp
, httpdocs
и domain[AB]
, и они одинаковы для каждого пути. Единственное, что отличается, это пользователь.