Исправление ошибки мобильной версии плагина Компании

Пока еще не готова мобильная версия плагина, но уже известно как исправить проблему из-за которой топики компаний открываются с ошибкой.
Fatal error: Uncaught exception 'SmartyException' with message 'Unable to load template file 'menu.main.tpl' in 'nav.tpl'' in E:\www\domains\test\r10\engine\lib\external\Smarty\libs\sysplugins\smarty_internal_templatebase.php:127 Stack trace: #0 E:\www\domains\test\r10\engine\lib\external\Smarty\libs\sysplugins\smarty_internal_template.php(288): Smarty_Internal_TemplateBase->fetch(NULL, NULL, NULL, NULL, false, false, true) #1 E:\www\domains\test\r10\templates\compiled\mobile\071fdd5b85056e33e325611e03241c050a84d9d8.file.nav.tpl.php(54): Smarty_Internal_Template->getSubTemplate('menu.main.tpl', NULL, NULL, NULL, NULL, Array, 0) #2 E:\www\domains\test\r10\engine\lib\external\Smarty\libs\sysplugins\smarty_internal_templatebase.php(180): content_51168d7642c5b8_26229961(Object(Smarty_Internal_Template)) #3 E:\www\domains\test\r10\engine\lib\external\Smarty\libs\sysplugins\smarty_internal_template.php(288): Smarty_Internal_TemplateBase->fetch(NULL, NULL, NULL, NULL, false, false, true) #4 E:\www\domains\test\r10\templates\compiled\mobile\5274d1dbb4725efda7bc453e43869f54ea5398f9.file.header.tpl.php(201): Smarty_Internal_Template->getSubTemplate('nav.tpl', NULL, NULL, NULL, NULL, Array, 0) #5 E:\www\domains\test\r10\engine\lib\external\Smarty\libs\sysplugins\smarty_internal_templatebase.php(180): content_51168d76146716_97210804(Object(Smarty_Internal_Template)) #6 E:\www\domains\test\r10\engine\lib\external\Smarty\libs\sysplugins\smarty_internal_template.php(288): Smarty_Internal_TemplateBase->fetch(NULL, NULL, NULL, NULL, false, false, true) #7 E:\www\domains\test\r10\templates\compiled\mobile\c710cafe668729bbd09d441c709278855b551652.file.topic.tpl.php(36): Smarty_Internal_Template->getSubTemplate('header.tpl', NULL, NULL, NULL, NULL, Array, 0) #8 E:\www\domains\test\r10\engine\lib\external\Smarty\libs\sysplugins\smarty_internal_templatebase.php(180): content_51168d75f1e702_48219556(Object(Smarty_Internal_Template)) #9 E:\www\domains\test\r10\engine\lib\external\Smarty\libs\sysplugins\smarty_internal_templatebase.php(374): Smarty_Internal_TemplateBase->fetch('E:\www\domains\...', NULL, NULL, NULL, true) #10 E:\www\domains\test\r10\engine\modules\viewer\Viewer.class.php(328): Smarty_Internal_TemplateBase->display('E:\www\domains\...') #11 [internal function]: ModuleViewer->Display('E:\www\domains\...') #12 E:\www\domains\test\r10\engine\classes\Engine.class.php(558): call_user_func_array(Array, Array) #13 E:\www\domains\test\r10\engine\classes\Router.class.php(439): Engine->_CallModule('Viewer_Display', Array) #14 E:\www\domains\test\r10\engine\classes\Router.class.php(137): Router->__call('Viewer_Display', Array) #15 E:\www\domains\test\r10\engine\classes\Router.class.php(137): Router->Viewer_Display('E:\www\domains\...') #16 E:\www\domains\test\r10\engine\classes\Router.class.php(127): Router->Shutdown(false) #17 E:\www\domains\test\r10\index.php(34): Router->Exec() #18 {main} thrown in E:\www\domains\test\r10\engine\lib\external\Smarty\libs\sysplugins\smarty_internal_templatebase.php on line 127


Эти изменения я внес в github мобильного шаблона github.com/venticello/lstemplate-mobile/commit/4ada3f5d2a5d6e923b4a629b8a90f16e21a6a5ea подправьте у себя и плагин компании будет работать на мобильной версии.

Livestreet CMS в облаках Infobox

infoboxКомпания Infobox предоставила возможность бесплатно (до 1 февраля) тестировать их облачные сервера, в этой статье напишу как я сделал распределенную систему. Решил сделать два http-сервера и один сервер под базы данных. На самом деле, для не нагруженных проектов можно держать на одном сервере базу данных и http-сервер, а на втором только http-сервер подключать по необходимости, но мне было интересно построить именно такую систему, чтобы при увеличении нагрузок, на нее перейти.
Читать дальше →

Ошибки установки APC

Если при сборке apc из исходников
sudo pecl install apc

возникают ошибки
/pear/temp/APC/apc.c:488: error: 'apc_regex' has no member named 'nreg'
...
make: *** [apc_compile.lo] Error 1

нужно установить
apt-get install libpcre3-dev


Если не находит phpize то нужно установить
apt-get install php5-dev


Если после установки на сайте ошибки вида
require_once() [function.require-once]: apc_cache_find
Notice: require_once() [function.require-once]: apc_cache_make_file_entry: entry->data.file.filename

то при установке нужно было выключать встроенную отладку
Enable internal debugging in APC [no]: no

Решение проблем Munin

В логах ошибки mailstats:
mailstats: /var/lib/sendmail/sm-client.st: No such file or directory	
mailstats: /var/lib/sendmail/sendmail.st: No such file or directory


Решение:
# grep StatusFile /etc/mail/sendmail.cf
O StatusFile=/var/lib/sendmail/sendmail.st

создаем файлы
# touch /var/lib/sendmail/sm-client.st
# touch /var/lib/sendmail/sendmail.st


вызываем mailstats, рисуется табличка, значит все ок.

А вы уверены что у вас все работает правильно?


Советую всем проверить файл /logs/sql_error.log где установлен livestreet там встречаются интересные ошибки которые возникают в работе сайта, но вы их не видели.
Например с помощью просмотра лога я выявил что в 1.0.1 не удаляются комментарии переписки, если сообщения шли не один за другим, а деревом.
Лечится это одной строчкой, добавил коммит в git livestreet
Ошибка происходит из-за того что есть констрейнт который проверяет целостность комментариев, и так как функция удаляет последовательно он ругается
Cannot delete or update a parent row: a foreign key constraint fails 
(`prefix_comment`, CONSTRAINT `prefix_topic_comment_fk` 
FOREIGN KEY (`comment_pid`) REFERENCES `prefix_comment` (`comment_id`) ON DELETE CASCADE ON UPDATE CASCADE)

нужно чтобы сначала удалялись новые комментарии, а потом старые и ошибки не будет.
Ошибка актуальна для баз InnoDB.

Дружим плагин "Компании" и NiceURL

При использовании плагина NiceURL топик компании показывается без «шапки» компании, что не очень красиво и удобно.
Чтобы это исправить откройте файл \plugins\niceurl\classes\hooks\HookUrl.class.php
найдите строку
if ($oTopic->getBlog()->getType()=='personal') {

и сделайте конструкцию вида:
if ($oTopic->getBlog()->getType()=='personal') {
   Router::Action($sActionRewrite,$oTopic->getId().'.html',array());
} elseif($oTopic->getBlog()->getType()=='company') {
   Router::Action('company',$oTopic->getBlog()->getUrl(),array('blog',$oTopic->getId().'.html'));
} else {
   Router::Action($sActionRewrite,$oTopic->getBlog()->getUrl(),array($oTopic->getId().'.html'));
}

и все, топики компаний будут отображаться правильно с новыми адресами.

Если у вас ошибки циклической переадресации ссылок, то активируйте плагин NiceURL после плагина компании и все будет работать.

Обновление стран и городов на новый формат

Обновил сайт на версию LS 1.0. При обновлении стран и городов на новый формат 1.0 вышла ошибка:
Notice: Undefined variable: iCityId in /var/www/путь до сайта/plugins/company/classes/modules/company/Company.class.php on line 823

Может я неправильно обновил плагин компании? Надо ли было сделать какой-нибудь sql скрипт по обновлению таблиц?
Тоже самое интересует по плагину работа.

Защита сервера от перебора паролей. Установка и настройка Fail2ban

Защита сервера, fail2banЕсли вы посмотрите лог аутентификации сервера /var/log/auth.log вы увидите, что там частые неудачные попытки авторизации на сервер, под разными именами или только под root, боты постоянно щупают сервера на слабость защиты. Есть вероятность что все таки подберут пароль, а так же их обращения негативно влияют на производительность сервера и увеличивают логи. Чтобы этого избежать поставьте простую программу fail2ban, это займет не больше чем 5 минут, она при трех неудачных попытках подбора пароля злоумышленником будет блокировать его доступ к серверу, на определенное вами время.
Читать дальше →

Адаптация для шаблона Social

Понравилась адаптация для плагина для этого шаблона. Понравился и способ вывода компаний и профиль получился очень интересный. Предлагаю подобный стиль сделать дефолтным.
Однако обратил внимание на 2 недочета:
— описание компаний может быть достаточно длинным (зависит от конфига), но на странице
http://.../companies/
длинные описания портят всю картину. На мой взгляд именно на этой странице надо поставить ограничение на количество символов (типа тега cut) но чтобы он вставлялся автоматом, с ссылкой «Подробнее»

— в профиле компании описание обрезается и оно не полное. нет возможности посмотреть полное описание. здесь желательна таже система, чтобы описание компаний было одинаковой длины, но для длинных вставлялся бы тег cut