Tamkovich.com: Телеком/VoIP блог
Современные технологии: Asterisk, SIP, Kamailio, Linux, Cisco, Linksys
Не могу создать директорию /wp-content/uploads/. Проверьте, доступна ли родительская директория для записи.
5 сентября, 2009 by Сергей Тамкович
Разное wordpressWordPress Error: «Unable to create directory /wp-content/uploads/ Is its parent directory writable by the server?»
Иногда, после обновления WordPress, перестает работать загрузка файлов. В сети можно найти много решений для этой проблемы, но ещё больше комментариев о том, что предложенные решения не работают. Не нашел решения и я, после очередного обновления WordPress загрузка файлов перестала работать. Самое интересное заключалось в том что логи error-log от apache и audit.log от SELinux были пустые. Для решения проблемы с загрузкой файлов пришлось отредактировать файл
wp-includes/functions.php
Авторы WordPress по непонятным причинам насильно подавляют все сообщения об ошибках производимые командой
mkdir()
После удаления символа ‘@’ в логе появилось сообщение об ошибке, и решение проблемы стало очевидным.
Решение оказалось очень простым:
[root@tamkovich www]# ls -l total 436 -rw-r--r-- 1 root root 397 Aug 31 18:46 index.php -rw-r--r-- 1 root root 15410 Aug 31 18:46 license.txt -rw-r--r-- 1 root root 11746 Aug 31 18:46 readme.html -rw-r--r-- 1 root root 16181 May 14 21:57 sitemap.xml drwxr-xr-x 7 root root 4096 Aug 31 18:46 wp-admin -rw-r--r-- 1 root root 40543 Aug 31 18:46 wp-app.php -rw-r--r-- 1 root root 220 Aug 31 18:46 wp-atom.php ...
Всеми скриптами на сайте владеет root.
[root@tamkovich www]# ls -l wp-content/uploads/ total 24 drwxr-xr-x 4 apache apache 4096 Feb 9 2009 2008 drwxrwxrwx 6 apache apache 4096 Aug 31 19:25 2009 drwxr-xr-x 2 apache apache 4096 Feb 9 2009 js_cache
Но Apache работает под пользователем ‘apache’, так что директории созданные php скриптами принадлежат apache. Если у вас включен php safemode, php не позволит скриптам владелец которых root писать что-либо в файлы принадлежащие другому пользователю (в данном случае — apache). Что бы решить проблему, достаточно сделать в корне вашего блога:
[root@tamkovich www]# chown -R apache:apache *
Откуда у авторов WordPress такая любовь к подавлению ошибок с помощью @? Ведь присутствуй в логе ошибка, масса людей не мучалась бы безрезультатным поиском ответов.
Разное wordpress
А как это сделать на VDS?
И на виртуальнике как это сделать?
>достаточно сделать в корне вашего блога
не могли б написать более подробно? что-за «корень сайта»?
что-за «корень сайта»? где его найти? что и где конкретно менять?
я новичек
Корень сайта, это папка на сервере, в которой лежит ваш сайт (index.php).
Обычно выглядит вот так:
/var/www/dima/www
или
/home/dima/www
или
/home/dima/html
Андрей, на виртуальнике делать точно так же, при условии что есть ssh доступ.
Привет. Я вообще не разбираюсь в этом всём, но очень прошу помочь. У меня на хостинге в файл менеджере есть файл index.php. Это вот там что-то делать? Что именно делать? Вписать эту строчку ([root@tamkovich www]# chown -R apache:apache *)? куда вписать?
Эвкалипт, эту строчку надо вписывать в консоле (ssh). Если вы в этом не разбираетесь, лучше всего обратиться в техническую поддержку хостинга, иначе есть шанс сделать хуже.
Здравствуйте. В поисках решения проблемы, набрела на Ваш ресурс. Понятное дело, внесла в закладки. Я всё туда вношу, если есть что-то, для меня полезное. Но, вот Вы ответили: «Эвкалипт, эту строчку надо вписывать в консоле (ssh). Если вы в этом не разбираетесь, лучше всего обратиться в техническую поддержку хостинга, иначе есть шанс сделать хуже».
Но, как же тогда «познавать», если не понять, не дойти до сути?
Я, вот тоже, новичок. Была у меня в помощницах девочка. Умничка… Но, она попала в больницу. Надолго. И, что? Я как без рук, и как без головы. Вся работа встала… Я обратилась в хостинг.В центр поддрежки. Проблема решается неделю… Кстати, та же самая, что и у Эквалипта…
Вот, примерно, так…
С вордпрессом, вообще, в последнее время, странное что-то, происходит. Было установлено два блога. Причём, установила свой пароль (то есть, входила на них). Месяц до них не доходили руки. Потом, решила, к новому году надо «подчистить хвосты», но не тут-то, было. Постоянно выходила ошибка: 404. И, хоть ты тресни. Я в панике. Куда подевался сайт? Почему раньше они были видны, и вдруг браузеры их не видят? По первому опыту (на другом хостинге, не на вертиальнике, как сейчас), при возникновении проблемы (сама могла напортачить), я удаляла базу данных, потом вновь заливала Вордпресс. Сейчас так не получается. Провайдеры хостинга уже сами двое суток бьются… Но, они-то, не новички! В отличие от меня. Правда, сейчас сам Вордпресс предлагает услуги своего хостинга. Предлагает к ним перевести сайты. Может, «нечисто» играют? Создают лишние проблемы владельцам сайтов, с целью переманить под собственное крыло?
Я очень разочарована. Но, привыкла к Вордпрессу, приловчилась на нём работать. Пока освоишь другие шаблоны… Сколько, опять времени, пройдёт…. Вот так вот всё печально.
Я удалил @ в wp-settings перед mkdir().
Возможность загрузки появилась, в еррор_лог ничего не пишется. Вернул собаку обратно, загрузка продолжает работать.
Илья, символ @ в php, при подстановке перед именем функции, заставляет php не выводить ошибки/предупреждения возникшие в ходе выполнения ф-ции. Других эффектов на программу он не оказывает. Так что, вероятно вы исправили что-то ещё или поменялись настройки сервера.
Спасибо, просто и элегантно. У меня почему-то после установки 2.9.2 папка uploads автоматически не была создана.
спасибо за совет, сегодня напишу хостинг провайдеру попробуем :)
спасибо за детальный анализ и подсказку.
надо написать письмо хостеру…
Все значительно проще!
Родительская — uploads, сделать доступной — поставить права на нее 777
Total Commander > Files> Change Attributes
Йосеф, гениально. Перечитайте статью ещё раз.
Очень благодарен за статью, только с помощью её смог решить проблему. ещё раз спасибо и успехов
неплохо бы сделать видеоурок, где и как что менять. Или поподробнее где находится эта консоль (ssh)
Дмитрий, делайте — с удовольствием размещу.
Я думал вы это сделаете! Хотя если подробно обьясните как, где и что, то я без проблем его сделаю для вас)
хех, в статье надо было пояснить, что статья только для тех, кто сам умеет настраивать апач и размещать там веб-ресурсы. Недавно разговаривал с одной конторой, изготавливающей сайты-визитки —
— не могли бы вы дать мне пароль и логин от ваших днс?
— !? (что я при этом подумал — не скажу)
— ну нам нужен наааш хостинг…
— !?
— я пытался ввести пароль и логин, который вы дали, но панель хостинга у меня не появляется и не знаю, как выгрузить скрипты… и у вас там дырка на сайте.
— куда вы его вводили и какая нахрен панель, объясните, зачем вы протерли дырку…
вобщем народ обычно не знает, что такое консоль, а уж что туда надо писать, что пхп скрипты появились на хостинге — вообще отдельная тема, им панель подавай и шоб все работало, а еще лучше — видео, как это все набирать. пичаль.
Спасибо Вам за статью. Правда для того чтобы она помогла пришлось еще 2 часа читать статьи в интернете. А про @ не знал. Век живи — век учись.
Кок поменять стандартную папку в которую загружаются медиафайлы. Удается создать директорию, но не понятно как прописать чтобы файлы попадали в нее автоматически.
Раньше это можно было сделать штатно из админки, теперь это задача не очевидна.
привет всем! вопрос автору
куда именно вставить эту строку [root@tamkovich www]# chown -R apache:apache *
Привет Вадим, вставлять надо только часть строки: chown -R apache:apache *
Вставлять её надо в консоль, доступ к которой осуществляется по протоколу SSH.
Первая же часть примера ( [root@tamkovich www]#) указывает, что Вы находитесь на сервере tamkovich, с правами root, в папке www
Спасибо!
У меня только под пользователем www-data запускался apache, но то мелочи.
Огромное спасибо!
ps aux | egrep ‘(apache|httpd)’ — этой командой просто узнать Вашего пользователя
Илья, Вы пишете
Я удалил @ в wp-settings перед mkdir().
я зашёл в wp-settings и не могу найти там mkdir() … или может я что то не так понял?
я кстати, обратил внимание, что на моём сайте всё работает не под юзером root
но всеравно вылетает эта ошибка.