MediaWiki Невозможно создать директорию mwstore://local-backend/local-public/

В этом посте расскажу о проблеме связанной с вики движком MediaWiki, который выдаёт в некоторых случаях может выдавать такую ошибку: «Невозможно создать директорию mwstore://local-backend/local-public/».

Краткое объяснение

Я буду объяснять у учётом того, что веб-сервер Apache, а ОС Linux Ubuntu. В CMS MediaWiki возникает ошибка со следующим сообщением: «Невозможно создать директорию «mwstore://local-backend/local-public/4/45» или подобным ему при попытке работе с файлами (например, удаление). Это происходит либо из-за нехватки места на жёстком диске сервера, либо из-за недостаточных прав для записи в файловую систему для пользователя от которого запущен сам веб-сервер. В какую именно директорию нужны права, можно посмотреть в логах веб-сервера Apache, где-то тут «/var/log/httpd/error_log».

Для начала проверим наличие свободного места на диске сервера. Если место есть, значит проблема в правах chmod.

Для этой проблемной директории в терминале выполняем следующую команду (для веб-сервера Аpache):

chown -R apache:apache /var/www/html/wiki/images/

Это добавит владельцем пользователя apache к этой директории с изображениями. Разумеется, путь к папке изображений у вас должен быть свой.

Если это не поможет, то можно назначить директории с изображениями соответствующие права:

chmod -R 775 /var/www/html/wiki/images/

Также стоит позаботиться и о внешних папках. Т.е. всех тех папках в которой находится эта папка изображений. Надо чтобы ко всем директориям в пути пользователь от которого работает веб-сервер имел полный доступ (на чтение, запись, выполнение).

Долгое объяснение

Такая ошибка может возникнуть например когда вы переносите сайт с одного хостинга на другой. Скажу сразу, что мне пришлось не мало мучиться дабы найти решений этой проблемы. Решение оказалось весьма простым. Всё дело в том, что у вашего пользователя от которого работает сервер Apache, а стало быть и все PHP скрипты, нет прав на запись данных в определённой директории сайта. Точную папку сказать не могу т.к. во всех версиях MediaWiki эта папка не однократно менялась, да и вообще её назначение можно настроить в конфигурационном файле «LocalSettings.php». Так вот всё дело именно в правах пользователя от которого совершает работу сервер Apache.

У меня всё это было просто из-за того, что я создавал папки для сайтов от имени root пользователя и естественно права владельца на этих папках были именно у рута. Для других же пользователей разные действия по созданию там новых файлов и директорий были запрещены. Просто надо подходить ответственней к этому делу, ведь в Linux разграничению прав пользователей уделяется большое внимание, именно по этому операционные системы на базе этого ядра считаются весьма безопасными.

Так вот, что же делать в данной ситуации. Я думаю тут и так всё понятно. Надо менять права на папки в которых находится сайт, да и на папки самого сайта желательно бы тоже права поменять дабы всё было разрешено. Я именно так и сделал, просто поставил на всё права доступа 777. Папка веб-сайта находится у меня в директории «/home/sites», поэтому я задал права командой:

chmod -R 777 /home/sites/*

Таким образом всё, что внутри папки «/home/sites» стало иметь права доступа «777» (это полные права: чтение, запись, выполнения для владельца, группы и вообще всех пользователей системы). Флаг/ключ/параметр «-R» указывает, что обойти все директории и файлы надо рекурсивно, пометив все таким образом. Для меня такой вариант был весьма приемлем т.к. только я сам пользуюсь своим сервером. Если же вам надо чётко разграничивать права доступа. То придётся добавлять пользователя сервера Apache в необходимые группы и потом уже настраивать права на файлы именно для этих групп пользователей, но это уже другая история.

Теперь я думаю проблем вида «Невозможно создать директорию mwstore://local-backend/local-public/» у вас возникнуть не должно. Помните, при проблемах в работе с файловой системой всё дело в заполненности диска или в правах доступа пользователей. Спасибо за внимание.