Ошибка 504 MODX Revo после смены тарифа хостинга
Ситуация, когда после перехода на новый тарифный план веб-хостинга сайт на MODX Revolution перестаёт работать и выдаёт ошибку 504 Gateway Timeout, встречается довольно часто. Пользователи замечают, что статические файлы в корне доступны, а сам движок падает. В этой статье мы разберём, почему это происходит, как проанализировать логи и что делать для восстановления работы сайта.
Почему MODX Revo выдаёт 504 ошибку после смены тарифа?
При смене тарифа хостинг-провайдер часто меняет IP-адрес сервера или его конфигурацию. Для MODX Revo это критично, так как система использует внутренние настройки подключения к базе данных и кеширования. Ошибка 504 указывает на то, что сервер не получил своевременного ответа от вышестоящего узла (например, от PHP-обработчика или БД).
Основные причины:
- Изменение параметров подключения к MySQL (новый хост, порт или сокет).
- Некорректные права на папки
core/cacheиcore/config. - Несовместимость версии PHP на новом тарифе с MODX Revo 2.7.
- Проблемы с mod_rewrite или конфигурацией веб-сервера Apache/Nginx.
Анализ логов: что говорят ошибки?
В логах, предоставленных пользователем, видны три ключевых сообщения:
- PHP Warning: Error while sending QUERY packet - ошибка отправки запроса к MySQL. Это говорит о том, что соединение с БД было разорвано или превышен лимит памяти.
- File does not exist: site.ru/public_html/blog - возможно, проблема с ЧПУ или файлом .htaccess.
- Call to a member function get() on null - фатальная ошибка в ядре MODX, когда объект
$modxне инициализирован. Это часто случается из-за неправильного подключения к БД.
Как исправить ошибку 504 на MODX Revo?
1. Проверьте подключение к базе данных
Откройте файл core/config/config.inc.php и убедитесь, что параметры host, port, user, password и dbname соответствуют новым настройкам сервера. Часто после смены тарифа хостинг предоставляет новый хост БД (например, localhost меняется на mysql.hosting.com).
2. Очистите кеш MODX
Удалите все файлы из папки core/cache/ (кроме файла .htaccess). Это сбросит системный кеш и заставит MODX пересоздать конфигурацию. После очистки проверьте права на папку - они должны быть 755 или 775.
3. Проверьте версию PHP
MODX Revo 2.7 стабильно работает на PHP 7.4 или 8.0. Убедитесь, что на новом тарифе используется подходящая версия. Если стоит PHP 8.1+, могут возникать ошибки совместимости с расширениями.
4. Настройте .htaccess
В корне сайта должен быть файл .htaccess с правилами mod_rewrite. Если его нет, создайте стандартный для MODX:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]Профилактика проблемы
Чтобы избежать подобных сбоев в будущем, перед сменой тарифа создавайте полный бэкап файлов и базы данных. После переноса всегда проверяйте работу сайта в тестовом режиме. Используйте мониторинг uptime и настройте оповещения об ошибках 5xx.
Что делать, если ничего не помогло?
Если после всех шагов сайт продолжает выдавать 504 ошибку, обратитесь в техническую поддержку хостинга. Попросите их проверить логи PHP-FPM и MySQL, а также убедиться, что не превышен лимит памяти для процессов. Иногда проблема решается только перезагрузкой сервера или изменением тарифного плана на более производительный.