Ах эти мейнтейнеры Дебиана! Обещали оставить в сквизе php-fpm, но опять появились баги тараканы в голове – вэб разработчики и сисадмины как и прежде используют глючные сборки от dotdeb, если вообще не пересобирают руками весь php.
Archive for the ‘php’ Category
Появилась задача сделать почти 300 ящиков на Яндекс.Почте для домена.
Изначально пост имел название “Чекер почтовых ящиков” – это часть миграции, но получился о шагах миграции корпоративной почты с левых, глючых почтовых служб на нормальный Яндекс)
Изначально стояла задача создать ящики с уже имеющмися адресами, с новыми паролями. Перенос содержимого ящиков также не требуется. Общий список ящиков находился на странице админки бывшего почтового сервиса
Пришлось много парсить
Фактически это руководство о том, как переезжать на Яндекс.почту
При переносе сотого сайта страндартными средствами битрикса (через restore.php) на спейсвеб возникла следующая ошибка:
Что такое?
Одна из проблем – лишние символы в /bitrix/php_interface/ в файлах init.php, dbconn.php.
Также эта гадкая ошибка возникает из за сбоя в компрессии, проверить пытался ли битрикс отдавать сжатый контент можно посмотрев заголовки:
Content-Encoding: gzip Content-Length:4663
В этом случае решением будет принудительное отключение компрессии – в файле /bitrix/php_interface/init.php добавить константу
define('BX_COMPRESSION_DISABLED',true);
function getRealLink($ID = 0)
.....
Сколько же времени ушло на
решение этой проблемы :-/
Задача: нужно перечислить файлы не в директории сайта
Проблема: действуют ограничения, например:
File(/etc/awstats) is not within the allowed path(s): (.) in /var/www/site/path/index.php on line 22
Warning: dir(/etc/awstats/) [function.dir]: failed to open dir: Operation not permitted
in /var/www/site/path/index.php on line 22
Есть вариант обойти это, при условии что разрешенно выполнять приложения через exec() и это unix-система
Очень давно хотелось попробовать написать iframe приложение для “ВКонтакте” – всё руки не доходили. А тут недавно добавили API для геолокации – теперь можно ставить в статус отметку о местоположении. Я просто не могу упустить шанса что-нибудь попробовать написать, тем более, что на момент написания таких приложений я не нашёл.
Продолжая тему написания custom контроллеров не для html вывода предлагаю мой вариант обработчика AJAX-запросов. Напомню, в предыдущий раз я описывал контроллер для консольного демона
Помимо удобной для меня выдаче данных(я предпочитаю в 99% случаев выдвать JSON) есть ещё ряд фитч:
- Код контроллера многократно используется наследниками класса, которые при необходимости могут перегрузить необходимые методы. В них написать простой ответ клиенту с помощью не сложных функций можно в пару строк – не нужно отвлекаться на создание json ответа, а писать логику.
- Дефолтные ответы об успешном выполнении запроса, предупреждения или ошибки
- Ловятся ошибки фреймворка и формируется адекватный отчёт об ошибке, а не километровый HTML от Kohana – просто идеально при использовании fireBug или аналогичных средств отладки.
- Если вызываемый метод не реализован в наследнике, то будет выдан user-friendly ответ(опять же если использовать регламент возвращаемых структур json)

Набросал простой скрипт, для удобного создания VirtualHost в debian.
Наверное тоже надоело лесть, создавать vhost по существующему, править пути, перезапускать сервер и так много раз и по кругу? А ещё не хватало опечататься?
Предлагаю такое решение: скрипт, делающий всю эту рутинную работу. Принимает только 1 аргумент – имя сайта и сам создаёт скелет и VirtualHost по шаблону.
В каталоге с сайтами создаётся папка с указанным именем. В ней – ещё 2 папки – log и www – для логов и сайта соответственно. А так же vhost – файл с описанием виртуального хоста по шаблону, лежащему в папке с сайтами. На этот файл создаётся симлинк в стандартное для дебиановского апача место – /etc/apache2/sites-avalable. После установки прав на созданные папки происходит вызов a2ensite и перезапуск апача. На скриншоте выше – кусочек такого скелета который получился после работы скрипта – из наутилуса

20-23 апреля 2010 года в Санкт-Петербургском Государственном Научно-Исследовательском Университете Инфорационных Технологий, Механники и Оптики состоялась седьмая ежегодная Конференция Молодых Учёных, приуроченная к 110летию университета.
Была поданна просто уйма заявок(700+ человек), в различные секции, например можно попробовать полистать программу конференции. Секции были не только технические, но и мелькали гуманитарные. В общем на любой вкус и цвет можно было выбирать куда идти.
Те, кто следит за количеством запросов, потребляемой памяти, временем выполнения и другими важными показателями при использовании debugToolbar также наверняка используют firePHP – плагин к плагину fireBug для Firefox позволяющий дебажить работу своего веб-приложения.
По понятным причинам, на сайте после apache поставлен nginx. Наверное кто нибудь пытался сделать дамп большого объекта или массива и запихать его в firePHP. PHP скрипт отрабатывает удачно, в логах также всё нормально(код 200):
А вот nginx в браузер выдаёт
502 Bad Gateway
nginx
Так и в моём случае: всё работало нормально, казалось бы изменил совсем чуть-чуть: добавил ещё один вызов метода у модели. И на тебе – 502 Bad Gateway.
Простой способ перебрать многомерный ассоциированный массив и получить из него трубуемые элементы, например по ключу:
static $result = array();
foreach($ar as $k => $v) {
if ($k == $searchfor) $result[] = $v;
if (is_array($ar[$k])) recarray($v, $searchfor);
}
return $result``;
}
$tst = array (
'bob' => 'Bob MEN',
'google' => array (
'somekey' => 'somevalue',
'bob' => 'big man'
),
'martin' => array(
'bob' => array(
'friend' => true,
'age' => 100500),
'cat' => 'animal'
)
);
$result = recarray($tst, 'bob');
print_r($result);