Хочу:
Если у хостера проблемы с базой данных, - не возможно зайти в PhpMyAdmin, а вместо сайта в это время отображается белая страница, то хотелось бы видеть на экране статическую страницу с надписью: "Хостинг опять сдох". Или что-то другое.
Для чего:
Т.к. техническая поддержка хостера отвечает что всё хорошо, (а такие перебои по 10-15 минут 4-10 раз в день) то товарищ, которому я поддерживаю сайт немного на меня обижается. А так зайдёт, посмотрит и будет обижаться на хостера
Итого:
Как вывести на экран статическую страницу в данном случае?
Комментарии
Так Drupal и выводит статическую страницу, если не может подключиться к БД.
Вы логи почитайте вашего веб-сервера. Там должны быть ошибки при невозможности подключения к БД
Так у хостера база данных "отпадает". А доступ к файлам через административную хостинг-панель у меня остаётся.
Вопрос не в отключении от базы а в выводе, в таком случае, статической страницы с моей надписью.
Вы не поняли.
Если Drupal не может соединится с БД он выдаёт свою статическую страницу об этом.
А вот если белый экран - это уже не БД, это 500-я ошибка. Тогда вам надо просто написать в .htaccess своё правило, если 500-я, то показывать такую-то страницу. Например:
ErrorDocument 500 /500.html
ErrorDocument 500 в случае fatal error не поможет, т.к. php не возвращает статус выполнения скрипта в отличии например от perl. А именно на этом статусе срабатывает ErrorDocument.
Тут нужно извращаться с отловом этих самых fatal error внутри скриптов, задавая обрамление кода ошибок через
ini_set('error_prepend_string', '<маркер>');
ini_set('error_append_string', '');
а потом отлавливая этот код в функции catchFatalError зарегистрированной к исполнению на выходе
register_shutdown_function('catchFatalError');
Перед тем как утверждать, что вам что-то не поможет, вы пробовали?
конечно пробовал и единственное что помогло как раз описанный мной метод.
Не помогло.
Браузеры молчат, только Chrome о чём-то тихо шепчет "Ошибка 324 (net::ERR_EMPTY_RESPONSE): Неизвестная ошибка."
Если проблема на уровне сетевого протокола вам ничего не поможет.
Лог веб-сервера читали?
Я бы лучше хостера сменил, чем так извращаться.
На моём хостинге работает всё именно так как я описал, т.е. всё по честному - 500я, значит 500я. Нет коннекта к базе - статическая страница самого Drupal.
Я так понимаю, что Друпал и есть база данных. Поэтому, если у хостера не работает компьютер с базой данных, то и сайт автоматом накрывается. Но Вы говорите, что у Вас страница статическая самого Друпала показывается. Можно по-подробнее, а что это за страница и где она "живёт"?
Живёт в database.inc в функции _db_error_page
а выглядит так:
Site off-line
The site is currently not available due to technical problems. Please try again later. Thank you for your understanding.
If you are the maintainer of this site, please check your database settings in the settings.php file and ensure that your hosting provider's database server is running. For more help, see the handbook, or contact your hosting provider.
Спасибо огромное!
А как мне заменить эту информацию про офлайн на свою?
Есть доступ к FTP и MySQL
Ну так функцию править надо вестимо.
А как до неё добраться, не подскажите?
Помоему уже сказал, см. файла database.inc и функцию _db_error_page
Файл database.inc посмотрел, понял только, что в файле:
common.inc можно написать слова для заголовка офлайновой страницы в строке 342:
drupal_set_title(t('Site off-line'));
А остальной текст надписи где можно изменить?
Вы издеваетесь что ли?
Я же ясно сказал какой функцией выводится означеное сообщение. Чего ещё не понятно-то?
Вообще судя по строке 342 где у меня совсем другое мы (на всякий случай) об одном Drupal говорим? Я о 6.x