Ошибка Joomla 5.3: is_writable open_basedir - как исправить
При установке Joomla 5.3.3 вы можете столкнуться с пустой красной табличкой в админке и ошибкой в логах: PHP Warning: is_writable(): open_basedir restriction in effect. File(/tmp) is not within the allowed path(s). Это типичная проблема совместимости настроек PHP и CMS. Разберём причины и способы решения.
Почему возникает ошибка open_basedir в Joomla 5
Ошибка появляется, когда Joomla пытается проверить доступность папки /tmp для записи, но PHP-директива open_basedir ограничивает доступ только к определённым каталогам. В вашем случае Joomla обращается к системному /tmp, а не к указанному в конфигурации /home/site.ru/public_html/tmp. Это происходит из-за того, что CMS по умолчанию использует системную временную папку, если не найдена локальная.
Как исправить красную табличку в админке Joomla
Вот пошаговая инструкция для устранения ошибки:
- Шаг 1: Откройте файл
configuration.phpв корне сайта и проверьте параметрpublic $tmp_path = '/home/site.ru/public_html/tmp';. Убедитесь, что путь корректен и каталог существует. - Шаг 2: Создайте папку
tmpвручную, если её нет, и установите права 755 или 775. - Шаг 3: В конфигурации PHP (php.ini или через хостинг-панель) измените
open_basedir, добавив туда путь к вашей папке/home/site.ru/public_html/tmp. Пример:open_basedir = /home/site.ru/public_html:/home/site.ru/.tmp/:/home/site.ru/public_html/tmp. - Шаг 4: Перезапустите PHP-FPM или веб-сервер (Apache/Nginx) для применения изменений.
- Шаг 5: В админке Joomla перейдите в «Система» → «Глобальная конфигурация» → «Сервер» и укажите правильный путь к временной папке, если он сбросился.
Почему Joomla обращается к /tmp вместо указанного пути
Joomla 5 использует библиотеку joomla/filesystem, которая проверяет is_writable() для системного /tmp, если локальная папка не определена или недоступна. Это связано с тем, что в файле libraries/vendor/joomla/filesystem/src/Path.php на строке 238 выполняется проверка доступности каталога. Если open_basedir не включает /tmp, возникает предупреждение.
Дополнительные решения для ошибки FastCGI и статуса 0
Ошибка upstream sent invalid status "0" в логах Nginx/FastCGI часто сопутствует проблеме с open_basedir. После исправления пути к временной папке эта ошибка исчезает. Если нет - проверьте права на папку tmp и убедитесь, что PHP-сессии сохраняются корректно.