Как поменять страницу об отсутствии доступа к базе
Прислано: Shedko
вт, 12/09/2006 - 01:13
Вот появилась новая проблемка, как поменять страницу об отсутствии доступа к базе данных ?
А то пока на сервере в Германии делали облуживание, иногда высвечивалась эта страничка, и все бы ничего, но в ней указано имя базы данных и имя пользователя, спасибо что еще и пароль не показали.
Так можно ли поменять эту страничку, и как ?
Особенно хорошо было бы не менять ядро, если можно.
Спасибо.
- Shedko's blog
- Для комментирования войдите или зарегистрируйтесь
Ну раз никто не отвечает пока, изложу свои соображения.
Как понял из коментариев в theme.inc, походу эту страницу нельзя поменять без редактирования файлов database.mysql.inc и database.mysqli.inc.
Т.к. когда эта страница выводится на экран, то сам Drupal не знает какая сейчас тема, да и логично, откуда ? Ведь база не доступна.
Вот блин....
- Для комментирования войдите или зарегистрируйтесь
хех... и это называется "отделение содержания от оформления"... что мешало проверять нужный файл в папке тем, например?
- Для комментирования войдите или зарегистрируйтесь
Ну такое можно реализовать только для перехвата страницы "504 - Сайт находится на обслуживании" - но ведь тогда проблем с базой нет, но буду смотреть эту функцтю, а вдруг и здесь сработает. :-)
- Для комментирования войдите или зарегистрируйтесь
ну почему же? неужели при отсутствии коннекта к базе нельзя переадресовывать, например, на определённую страницу? я думаю можно, ничто не мешает эту страницу конфигурировать отдельно (чистый хтмл, например)...
ну а эту страницу (например noconnect.html) искать, скажем, в папке themes...
- Для комментирования войдите или зарегистрируйтесь
Хотя действительно скорее всего посмотрю выдержки из database.mysql.inc и database.mysqli.inc, т.е. как там определяется что нет коннекта к базе, а потом этот кусок сделать отдельным файлом и первым подлючить в index.php сайта, а затем кж делать редирект на html страничку в папке с темой.
Осталось только это реализовать, но учитывая что с php не знаком буду действовать методом тыка :-), ну да ладно хотябы в голове сложилась логика что писать, а уж куски кода "повыдергивать" из файлов папки include смогу.
- Для комментирования войдите или зарегистрируйтесь
Да, это бы сделать, да ещё "сайт в оффлайне"... тогда бы вообще всё было нормально... а то непорядок, когда показывается что-то не темообразное...
если получится что-то рабочее сделать, то может напишете, что вы делали и как?
- Для комментирования войдите или зарегистрируйтесь
Если насчет Сайт в оффлайне, то могу порекомендовать посмотреть тему meta, там эта страница настроенна, оттуда и себе стянул такую страничку :-)
- Для комментирования войдите или зарегистрируйтесь
да? интересно... не подскажете где конкретно в этой теме что смотреть? устанавливать из-за этой мелочи не хочется...
- Для комментирования войдите или зарегистрируйтесь
Создаем в папке нашей темы подпапку "maintenance" ( просто мне так удобно, смотрите сами как хотите)
в корне скина создаем файл "maintenance_page.tpl.php"
вот его содержание, только надо заменить везде где встретится
themes/luna/maintenance/
на
themes/НАЗВАНИЕ НАШЕГО СКИНА/maintenance/
(знаю, есть функция для определения пути к скину, но лень было вспоминать, вот и прописал полный путь)
<?php echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="Shortcut Icon" type="image/x-icon" href="favicon.ico" /> <meta name="generator" content="Drupal" /> <base href="<?php global $base_url; print $base_url;?>" /> <style type="text/css" media="all">@import "themes/luna/maintenance/maintenance.css"; </style> <!--[if IE 6]> <script type="text/javascript" src="themes/luna/maintenance/pngfix.js"></script> <![endif]--> </head> <body> <div id="message-box"> <?php if ($site_name != ""): ?> <h2><?php print $site_name ?><br />503 - Service Unavailable</h2> <?php else: ?> <h2>503 - Service Unavailable<br />Sorry For The Inconvenience</h2> <?php endif; ?> <div id="message"><?php print $content ?></div> </div> <div> <img src="themes/luna/maintenance/maintenance-drupalicon.png" width="359" height="460" alt="Shedko Software" id="drupal-logo" /> </div> </body> </html>
затем в папку maintenance ложим лого сайта с именем "maintenance-drupalicon.png", размер 359 на 460, это казано в предыдущем файле.
также сюда ложим рисунок для фона страницы, с именем "background-grey.gif", размеры 9 на 450 пкс.
создаем в этой же подпапке файл "maintenance.css", с содержанием
/* $Id: maintenance.css,v 1.1.2.1 2006/02/12 04:11:52 kencollins Exp P u t t i n g t h i n g s o n t o p o f o t h e r t h i n g s ! By: Ken Collins +---------------------------------------------+ */ * { list-style: none; margin: 0; padding: 0; } img { border: none; } a { text-decoration: none; } a, a:link, a:visited { border-bottom: 1px dotted #666; color: #f93; } a:hover, a:active { color: #9c6; } html, body { background: #fff url('background-grey.gif') repeat-x fixed top left } body { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 62.6%; min-width: 420px; } #message-box { left: 394px; position: absolute; top: 175px; z-index: 10; } h2 { color: #9C0; font-family: "Arial Narrow", Arial, Helvetica, sans-serif; font-size: 2.4em; font-weight: normal; line-height: 1em; text-transform: uppercase; width: 16em; margin-bottom: 4px; } #message { width: 32em; font-size: 120%; font-family: Verdana, "Lucida Grande", Geneva, Arial, Helvetica, "Bitstream Vera Sans", sans-serif; font-weight: normal; color: #333; letter-spacing: 0em; line-height: 1.5em; border-top: 1px dashed #666; padding-top: 5px; } #drupal-logo { top: 22px; position: absolute; left: 31px; z-index: 5; }
в папке maintenance создаем последний файл "pngfix.js", а его содержание
// $Id: pngfix.js,v 1.1.2.1 2006/02/12 04:11:52 kencollins Exp $ // Drupal.js Global Killswitch if (isJsEnabled()) { addLoadEvent(correctPNG); } // ------------------------------------------------------------------------ // | Correctly handle PNG transparency in Win IE 5.5 or higher. // | <a href="http://homepage.ntlworld.com/bobosola" title="http://homepage.ntlworld.com/bobosola">http://homepage.ntlworld.com/bobosola</a>. ------------------------------------------------------------------------ function correctPNG() { for(var i=0; i<document.images.length; i++) { var img = document.images[i] var imgName = img.src.toUpperCase() if (imgName.substring(imgName.length-3, imgName.length) == "PNG") { var imgID = (img.id) ? "id='" + img.id + "' " : "" var imgClass = (img.className) ? "class='" + img.className + "' " : "" var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' " var imgStyle = "display:inline-block;" + img.style.cssText if (img.align == "left") imgStyle = "float:left;" + imgStyle if (img.align == "right") imgStyle = "float:right;" + imgStyle if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle var strNewHTML = "<span " + imgID + imgClass + imgTitle + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";" + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader" + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>" img.outerHTML = strNewHTML i = i-1 } } }
теперь осталось последнее, открываем template.php из папки своего скина и в него добавляем
/** * Catch the theme_maintenance_page function in "includes/theme.inc", and redirect * through the template api and point Drupal to the "maintenance_page.tpl.php" file # to style the 503 Service Unavailable page when the site is offline. The phptemplate * variables function is used to get the $stie_name variable used on the page template. */ function phptemplate_maintenance_page($content) { return _phptemplate_callback('maintenance_page', array('content' => $content)); }
Все идем и смотрим
- Для комментирования войдите или зарегистрируйтесь
интересно... спасибо большое, сам бы я и не разобрался...
"создаем в этой же подпапке файл “maintenance.css”, с содержанием"
это надо именно с таким содержанием или с тем, что в моём css?
теперь осталось последнее, открываем template.php из папки своего скина и в него добавляем
куда добавляем? на какой строке? или заменяем то, что там было?
для человека не знающего php, у вас всё очень хорошо получается...
- Для комментирования войдите или зарегистрируйтесь
это надо именно с таким содержанием или с тем, что в моём css?
этот css просто определяет стили этой страницы которая генерируется из "maintenance_page.tpl.php", я его пока не менял, так как и такая страничка мне нравится. :-) потом уж буду менять
куда добавляем? на какой строке? или заменяем то, что там было?
просто добавляем в конец этого файла, у меня сработало.
- Для комментирования войдите или зарегистрируйтесь
ясно, спасибо за развёрнутое пояснение... теперь осталось решить проблему страницы "нету коннекта к базе" и всё будет нормально...
- Для комментирования войдите или зарегистрируйтесь
будем надеятся, что кто-нибудь уже возился с этим и поделится опытом, а то уж больно не хочется менять модули из "include" :-)
- Для комментирования войдите или зарегистрируйтесь
Как вариант можно в файле template.php создать функицию phptemplate_maintenance_page и через неё сделать вывод страницы на обслуживании, странно что его в манулае друпала не описали, наверное потому что создать файл темы проще гораздо.
- Для комментирования войдите или зарегистрируйтесь
странно, что это не настраивается... и не входит в ядро...
такие ошибки довольно частое явление, их бывает видно и на достаточно серьёзных сайтах...
- Для комментирования войдите или зарегистрируйтесь




Комментарии