Ошибка 500 при входе в админку MODX после переноса на новый хостинг

    Перенос сайта на другой хостинг - ответственная операция, и нередко после неё возникают проблемы, например, ошибка 500 при попытке войти в панель управления MODX (админку /manager). Даже если сам сайт отображается корректно, вход может блокироваться. Рассмотрим основные причины и способы решения этой распространённой проблемы.

    Почему возникает ошибка 500 в админке MODX?

    Ошибка 500 (Internal Server Error) - это общий сбой сервера, который может быть вызван множеством факторов. В контексте MODX после переноса типичные причины включают:

    • Несовместимость конфигурационных файлов - неверные пути или настройки БД в core/config/config.inc.php.
    • Проблемы с правами доступа (chmod) к папкам cache/, core/ или manager/.
    • Ошибки в .htaccess - даже временное переименование не всегда решает проблему, если ошибка в самом файле.
    • Конфликт версий PHP - хотя вы установили 7.4, могут отсутствовать необходимые расширения.
    • Повреждённые сессии или кэш - очистка папки cache/ не всегда удаляет все временные файлы, особенно на новом сервере.

    Как диагностировать причину ошибки 500?

    Прежде чем исправлять, нужно точно определить источник проблемы. Вот пошаговая инструкция:

    1. Проверьте error.log детальнее

    Ваш лог показывает ошибку в core/xpdo/om/xpdoquery.class.php - это указывает на проблему с запросом к базе данных. Проверьте настройки подключения в core/config/config.inc.php: правильность имени БД, пользователя, пароля и хоста.

    2. Включите отображение ошибок

    Временно добавьте в файл index.php (в корне сайта) строки:

    error_reporting(E_ALL);
    ini_set('display_errors', 1);

    Это покажет конкретную ошибку вместо общей 500.

    3. Проверьте права на папки

    Убедитесь, что папки core/cache/, core/logs/ и manager/ имеют права 755 или 777 для временного решения. На многих хостингах 755 достаточно.

    Пошаговое решение проблемы с входом в MODX manager

    Если диагностика не помогла, выполните следующие действия:

    • Обновите конфигурацию БД - откройте core/config/config.inc.php и проверьте параметры $database_user, $database_password, $database_dsn. Убедитесь, что хост указан как localhost или IP-адрес нового сервера.
    • Сбросьте сессии - удалите все файлы в папке core/cache/ (кроме .htaccess, если есть). Также очистите папку core/cache/sessions/.
    • Проверьте .htaccess - даже если вы его переименовали, убедитесь, что нет других файлов .htaccess в подпапках (например, в manager/). Создайте временный пустой .htaccess в корне.
    • Проверьте расширения PHP - MODX требует PDO, pdo_mysql, json, session. Убедитесь, что они включены на новом хостинге.
    • Используйте альтернативный вход - попробуйте site.de/manager/?a=logout или добавьте параметр ?f=1 для сброса кэша.

    Дополнительные советы для предотвращения ошибок

    При будущих переносах всегда делайте дамп БД через phpMyAdmin или командную строку, а не через админку. Проверяйте все пути в конфиге и права на файлы сразу после копирования. Если ошибка 500 появляется только в админке, а не на всём сайте, проблема часто в сессиях или конфигурации MODX.

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