Код Сапы и много сайтов

Опубликовал 30 Март 2010 в рубрике Создание сайтов. Комментарии: 0

Ну вот, и меня уже парсят :) Хорошо хоть с прямой ссылкой, и то ничего. Что же, продолжим ! Сегодня будем говорить о том, как завязать код Сапы на так называемый «групповой» аккаунт. Да, я знаю, что эта тема для начинающих, но, в поисках предмета для написания поста, я вспомнил, что как-то решал такую проблему и подробной информации так и не нашел. Позже появилась небольшая запись в хелпе Сапы – и только. Значит, будем исправлять. Итак, начнем…

Не секрет, что часто на множестве хостингов мы используем групповой аккаунт – это когда на одном аккаунте располагается несколько площадок (их может быть две, а может и с десяток). Это, разумеется, удобно. Но… может возникнуть определенная проблема: у вас поселено, например, пять сайтов. Вы ставите на один из них код Сапы, и начинается жесть.

Сервер напрочь отказывается воспринимать вашу папку (эта такая тарабарщина со 100500 символами), а показывает вам вот что:

Warning: require_once(/public_html/ЗДЕСЬ ВАШ ID САПЫ/sape.php) [function.require-once]: failed to open stream: No such file or directory in /public_html/ВАША ПАПКА С САЙТОМ/templates/default/template.php on line 24

 

Fatal error: require_once() [function.require]: Failed opening required ‘/public_html/ВАШ ID САПЫ/sape.php’ (include_path=’.:/usr/share/php:/usr/share/pear’) in /public_html/ВАША ПАПКА С САЙТОМ/templates/default/template.php on line 24

  

«On line», то есть номер строки, может варьироваться, а на строке этой расположено вот это:

require_once($_SERVER['DOCUMENT_ROOT'].’/’._SAPE_USER.’/sape.php’);
 

«Что за хрень ?» – не понимаете вы – «Ведь папка там есть, в корне сайта, как написано ! Почему, что это такое и как это убрать ? Немедленно !»

Все верно, только есть один маленький нюанс :) Если у вас на аккаунте несколько сайтов, а тем паче если на части из них установлена Сапа, вы должны поместить папку со скриптом Сапы не в корень сайта, а в корень главной директории, то есть в вашу папку public_html, ясно ? :) И никуда больше.

Ну хорошо, сделали вы это, сервер не огрызается, вроде все нормально. Заходите вы в свой аккаунт Сапы и видите, что все ссылки упали в Error. Потрясающе ! Это ли не то, что нам надо ! В чем дело ? Что за хрень ? А дело в том, что скриптик Сапы создает только один файл links.db для одного сайта. А в этом файле хранится вся информация о том, что отображать на ваших страничках. Скрипт теряется и просто не знает, что отображать – ведь сайтов много, а links.db один ! Караул, край, все ! Уходим из Интернета, бросаем все и идем на завод. Как бы не так.

Раз скриптик запутался, надо ему показать, куда идти :) Скриптикам же показывается все при помощи переменных и директив, и мы берем и пишем в ваш код, который вы вставили на страницу, вот такую вещь (не в файл links.db, а в код отображения ссылок):

<?php 
     if (!defined(‘_SAPE_USER’
)){
        define(‘_SAPE_USER’, ’ВАШ ID САПЫ’
); 
     }
     require_once($_SERVER['DOCUMENT_ROOT'].’/’._SAPE_USER.’/sape.php’
); 

     $o['multi_site'] = true;
     $sape = new SAPE_client
($0);
?>

Синее – это то, что надо добавить, а красное – это то, что у вас уже есть. Включается функция, позволяющая создавать файлы links.db индивидуально для каждого сайта, и проблема решается. В общем-то, все :)

Посты пишутся редко, поскольку все время уходит на проект 10 сателлитов - работы ведутся уже над четырьмя сайтами, один почти завершен. В общем, до нового поста :)




Ваш комментарий !