500 ошибка как поступить дальше?
Знаю многие встречали (так как было много вопросов ко мне) такое что когда ставишь компонент например в зависимостях есть pdoTools, но нет правильной проверки получают 500 ошибку. Или взять второй вариант разрабатываешь свой плагин допустил ошибку или случайно удалил файл в IDE c какого-то компонента и здесь перестала работать админка, так как плагин имел например событие "OnHandleRequest".
Что делать дальше?
Да всё намного проще нежели думают другие
Ручное отключение
Заходим в базу через phpMyAdmin или Adminer ищем таблицу "modx_site_plugins", где "modx_" свой префикс таблицы, ищем поле "disabled" меняем 0 на 1, теперь плагин отключен.
Чтобы отключить все плагины можно взять вызвать sql запрос.
Автоматическое отключение
Копируем код сохраняем например в файл «plugins_disable.php» в главный каталог сайта переходим по пути site.com/plugins_disable.php ждем завершения работы.
Что делать дальше?
Да всё намного проще нежели думают другие
Ручное отключение
Заходим в базу через phpMyAdmin или Adminer ищем таблицу "modx_site_plugins", где "modx_" свой префикс таблицы, ищем поле "disabled" меняем 0 на 1, теперь плагин отключен.
Чтобы отключить все плагины можно взять вызвать sql запрос.
UPDATE `modx_site_plugins` SET `disabled` = '1' WHERE `modx_site_plugins`.`disabled` = 0
Дальше нужно почистить кеш.Автоматическое отключение
Копируем код сохраняем например в файл «plugins_disable.php» в главный каталог сайта переходим по пути site.com/plugins_disable.php ждем завершения работы.
<?php
error_reporting("E_ALL");
ini_set("display_errors", true);
require_once('core/config/config.inc.php');
$cache = MODX_CORE_PATH . "cache";
$mysqli = new mysqli($database_server, $database_user, $database_password, $dbase);
/* проверка соединения */
if ($mysqli->connect_errn) {
echo "Не удалось подключиться: {$mysqli->connect_error}\n";
exit();
}
/* Отключение плагинов */
if (!$mysqli->query("UPDATE `{$table_prefix}site_plugins` SET `disabled` = '1' WHERE `{$table_prefix}site_plugins`.`disabled` ='0'")) {
echo "Не удалось отключить плагини: ({$mysqli->errno}) {$mysqli->error}";
exit();
}else{
echo "Отключение плагинов успешно<br />";
}
$mysqli->close();
echo 'Удаление кеша';
function rrmdir($dir) {
if (is_dir($dir)) {
$objects = scandir($dir);
foreach ($objects as $object) {
if ($object != "." && $object != ".." && $object != "log") {
if (is_dir($dir. DIRECTORY_SEPARATOR .$object) && !is_link($dir."/".$object))
rrmdir($dir. DIRECTORY_SEPARATOR .$object);
else
unlink($dir. DIRECTORY_SEPARATOR .$object);
}
}
rmdir($dir);
}
}
rrmdir($cache);
echo "Готово";
unlink(basename(__FILE__));
Заходим в админку, и «Ура всё работает». Дальше исправляем или устанавливаем нужные компоненты, включаем плагины.
Поблагодарить автора
Отправить деньги
Комментарии: 7
Наверное стоит чуть дополнить:
1. Скрипт лучше сохранить в закрытую базовой авторизацией директорию. На всякий случай )
2. Добавить необязательный параметр $_GET['id'] для отключения конкретного плагина, т.к. чаще всего виновник известен. А то потом не разобраться, какие были включены, а какие нет. Особенно если сайт чужой или старый с тяжёлым наследством…
1. Скрипт лучше сохранить в закрытую базовой авторизацией директорию. На всякий случай )
2. Добавить необязательный параметр $_GET['id'] для отключения конкретного плагина, т.к. чаще всего виновник известен. А то потом не разобраться, какие были включены, а какие нет. Особенно если сайт чужой или старый с тяжёлым наследством…
1. Хорошое замечание, но в моем случае скрипт удаляется после использования в целях безопасности.
2. В случае всегда смотрю в логи и отключаю нужный вручную. Скрипт только сегодня набросал для пользователей так что могут быть всегда доработки.
2. В случае всегда смотрю в логи и отключаю нужный вручную. Скрипт только сегодня набросал для пользователей так что могут быть всегда доработки.
Да, я просмотрел.
Но можно и не удалять — вдруг снова навернётся — опять придётся загружать.
У меня часто есть на сайтах такая закрытая директория для всяких нужных обработок.
Но можно и не удалять — вдруг снова навернётся — опять придётся загружать.
У меня часто есть на сайтах такая закрытая директория для всяких нужных обработок.
Ну как показывает практика пользователи не следят за этим и на сайте может быть полно уязвимостей.
Кто хочет допишет в своих целях.
Кто хочет допишет в своих целях.
Это да. Если сайт не на поддержке, то такая директория удаляется после запуска.
Есть более простой вариант. Находим в папке core/cache/includes/elements/plugins файл с id плагина и комментируем содержимое или пишем второй строчкой return;. Частенько пользовался. Главное не удалять этот файл. Ибо тогда MODX создаст новый из неработающего плагина.
В данном варианте главное не удалить кеш, как написал Сергей.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.