Как поменять страницу об отсутствии доступа к базе

Главные вкладки

Аватар пользователя Shedko Shedko 12 сентября 2006 в 5:13



Вот появилась новая проблемка, как поменять страницу об отсутствии доступа к базе данных ?


А то пока на сервере в Германии делали облуживание, иногда высвечивалась эта страничка, и все бы ничего, но в ней указано имя базы данных и имя пользователя, спасибо что еще и пароль не показали.


Так можно ли поменять эту страничку, и как ?



Особенно хорошо было бы не менять ядро, если можно.

Спасибо.

Комментарии

Аватар пользователя Shedko Shedko 13 сентября 2006 в 0:51


Ну раз никто не отвечает пока, изложу свои соображения.

Как понял из коментариев в theme.inc, походу эту страницу нельзя поменять без редактирования файлов database.mysql.inc и database.mysqli.inc.

Т.к. когда эта страница выводится на экран, то сам Drupal не знает какая сейчас тема, да и логично, откуда ? Ведь база не доступна.


Вот блин....

Аватар пользователя B.X B.X 13 сентября 2006 в 1:58

хех... и это называется "отделение содержания от оформления"... что мешало проверять нужный файл в папке тем, например?

Аватар пользователя Shedko Shedko 13 сентября 2006 в 2:17

Ну такое можно реализовать только для перехвата страницы "504 - Сайт находится на обслуживании" - но ведь тогда проблем с базой нет, но буду смотреть эту функцтю, а вдруг и здесь сработает. Smile

Аватар пользователя B.X B.X 13 сентября 2006 в 2:58

ну почему же? неужели при отсутствии коннекта к базе нельзя переадресовывать, например, на определённую страницу? я думаю можно, ничто не мешает эту страницу конфигурировать отдельно (чистый хтмл, например)...
ну а эту страницу (например noconnect.html) искать, скажем, в папке themes...

Аватар пользователя Shedko Shedko 13 сентября 2006 в 3:06

Хотя действительно скорее всего посмотрю выдержки из database.mysql.inc и database.mysqli.inc, т.е. как там определяется что нет коннекта к базе, а потом этот кусок сделать отдельным файлом и первым подлючить в index.php сайта, а затем кж делать редирект на html страничку в папке с темой.


Осталось только это реализовать, но учитывая что с php не знаком буду действовать методом тыка :-), ну да ладно хотябы в голове сложилась логика что писать, а уж куски кода "повыдергивать" из файлов папки include смогу.

Аватар пользователя B.X B.X 13 сентября 2006 в 3:23

Да, это бы сделать, да ещё "сайт в оффлайне"... тогда бы вообще всё было нормально... а то непорядок, когда показывается что-то не темообразное...
если получится что-то рабочее сделать, то может напишете, что вы делали и как?

Аватар пользователя Shedko Shedko 13 сентября 2006 в 3:38


Если насчет Сайт в оффлайне, то могу порекомендовать посмотреть тему meta, там эта страница настроенна, оттуда и себе стянул такую страничку Smile

Аватар пользователя B.X B.X 13 сентября 2006 в 3:44

да? интересно... не подскажете где конкретно в этой теме что смотреть? устанавливать из-за этой мелочи не хочется...

Аватар пользователя Shedko Shedko 13 сентября 2006 в 4:05

Создаем в папке нашей темы подпапку "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.          
// |  http://homepage.ntlworld.com/bobosola.                              
------------------------------------------------------------------------

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));
}

Все идем и смотрим

Аватар пользователя B.X B.X 13 сентября 2006 в 4:20

интересно... спасибо большое, сам бы я и не разобрался...
[b]"создаем в этой же подпапке файл “maintenance.css”, с содержанием"[/b]
это надо именно с таким содержанием или с тем, что в моём css?
[b]теперь осталось последнее, открываем template.php из папки своего скина и в него добавляем[/b]
куда добавляем? на какой строке? или заменяем то, что там было?
для человека не знающего php, у вас всё очень хорошо получается...

Аватар пользователя Shedko Shedko 13 сентября 2006 в 4:28

это надо именно с таким содержанием или с тем, что в моём css?
этот css просто определяет стили этой страницы которая генерируется из "maintenance_page.tpl.php", я его пока не менял, так как и такая страничка мне нравится. Smile потом уж буду менять

куда добавляем? на какой строке? или заменяем то, что там было?
просто добавляем в конец этого файла, у меня сработало.

Аватар пользователя B.X B.X 13 сентября 2006 в 4:34

ясно, спасибо за развёрнутое пояснение... теперь осталось решить проблему страницы "нету коннекта к базе" и всё будет нормально...

Аватар пользователя Shedko Shedko 13 сентября 2006 в 4:57

будем надеятся, что кто-нибудь уже возился с этим и поделится опытом, а то уж больно не хочется менять модули из "include" Smile

Аватар пользователя Ainur Ainur 22 марта 2007 в 14:40

Как вариант можно в файле template.php создать функицию phptemplate_maintenance_page и через неё сделать вывод страницы на обслуживании, странно что его в манулае друпала не описали, наверное потому что создать файл темы проще гораздо.

Аватар пользователя B.X B.X 23 марта 2007 в 3:52

странно, что это не настраивается... и не входит в ядро...
такие ошибки довольно частое явление, их бывает видно и на достаточно серьёзных сайтах...