Поздравляю! Вы попали в архивный блог! Все новые материалы публикуются на hmdw.meX
Просмотров: 3000

Monstra CMS пустая страница вместо админки

Нашел сегодня забавный баг в Monstra CMS.

Добавил новый хост в панели Vesta CP и поставил туда Monstra CMS. Все поставилось без ошибок, публичная часть работает, а вот админка не отображается.

В логах ошибка такого плана:

PHP Fatal error:  require_once(): Failed opening required '/home//web/site.dev/public_html/engine/_init.php' (include_path='.:/usr/share/pear:/usr/share/php') in /home/admin/web/site.dev/public_html/admin/index.php on line 25

Внимательный читатель сразу обратит внимание на /home//web/. Видимо чего то не хватает =)

$_SERVER["DOCUMENT_ROOT"] выглядит вот так "/home/admin/web/site/public_html..."

Куда же делся наш админ? Идем в /admin/index.php и видим код такого плана:

// Main engine defines
define('DS', DIRECTORY_SEPARATOR);
define('ROOT', rtrim(str_replace(array('admin'), array(''), dirname(__FILE__)), '\\/'));
define('BACKEND', true);
define('MONSTRA_ACCESS', true);

По факту получается что разработчики вместо того чтобы отрезать от пути последнее - admin делают полный str_replace. Видимо понадеялись что слово adminв пути ни у кого больше не встретится =)

Решил этот вопрос мало претендующими на изящность костылями:

// Main engine defines
define('DS', DIRECTORY_SEPARATOR);
//My patch
$ar_root = explode(DS,dirname(__FILE__));
if(end($ar_root)=="admin") array_pop($ar_root);
$root = implode("/",$ar_root);
define('ROOT',$root) ;
echo ROOT;
//define('ROOT', rtrim(str_replace(array('admin'), array(''), dirname(__FILE__)$
//End of my patch
define('BACKEND', true);
define('MONSTRA_ACCESS', true);

Вот так все работает =)

twitter.com facebook.com vkontakte.ru odnoklassniki.ru livejournal.ru yandex.ru
Теги: , ,
Эта запись опубликована: Среда, 3 июля 2013 в рубрике Web-разработка.

Оставьте комментарий!