Не может загрузить медиа с помощью загрузчика Wordpress

Это имеет отношение к загрузке медиа в Wordpress.

Каждый раз, когда WP создает папку для новых закачек (он организует загрузки к году и месяцу: yyyy/mm), это создает его с "apache:apache' пользователь и группа с полным доступом ко всем (777 или drwxrwxrwx).

Однако после этого WP не может создать папку в той папке (например: mkdir 2011 успешно выполняется, но mkdir 2011/01 сбои). Кроме того, загрузки не могут быть перемещены в эти недавно созданные папки даже при том, что полномочия 777 (rwxrwxrwx).

Один раз в месяц я имею к chown недавно созданные папки для совпадения с user:group как остальной частью файлов. После того как я делаю это, загрузка хорошо работает (который не имеет смысла мне, действительно расстраивающая часть - то, что эта проблема не существует в других установках WP на других доменах на том же сервере.

* я не был уверен, должно ли это быть здесь или на serverfault.


Править: Содержание каталога /.../httpdocs/blog/wp-content/uploads имеет корректное владение

drwxrwxrwx 5 myuser psaserv 4096 Jun  3 18:38 uploads

Это - среда Plesk/CentOS, размещенная Храмом Медиа (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] и они - то же для каждого пути. Единственной вещью, которая отличается, является пользователь.

6
задан Justin Johnson 4 June 2010 в 22:20
поделиться

4 ответа

Попробуйте зайти на страницу настроек miscellaneous (или media, в зависимости от версии) и убедиться, что каталог загрузки по-прежнему wp-content/uploads.

Если нужно. задайте полный url тоже.

Также, в качестве последнего решения, отключите опцию организации их в папки, чтобы WordPress даже не нужно было создавать папки.

2
ответ дан 9 December 2019 в 20:40
поделиться

Попробуйте создать рекурсивный каталог с помощью 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()
              )
        );
1
ответ дан 9 December 2019 в 20:40
поделиться

Проверьте наличие бита setuid или setgid в каталоге выше каталога 2010. ls -l будет иметь s или S в разрешениях для каталога. Убедитесь, что этот каталог имеет правильное право собственности.

1
ответ дан 9 December 2019 в 20:40
поделиться

Недавно у меня была аналогичная проблема с Joomla, и я решил ее, добавив myuser в группу apache и добавив apache в группу psaserv.

1
ответ дан 9 December 2019 в 20:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: