Ошибка 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-сессии сохраняются корректно.

    Часто задаваемые вопросы