Все лгут
Вчера наткнулся на недокументированные функции ionCube Loader, сегодня набрёл на давний пост на форуме ionCube, где Nick Lindridge (гендиректор ionCube Ltd или кто-то в этом духе) рассказывал интересующемуся пользователю, что функции _dyuweyrj4() и _dyuweyrj4r() при вызове возвращают «жемчужины мудрости». Далее »
Окт
2010
Интересно…
Как выяснилось, у ionCube Loader есть две недокументированных настройки в ini-файле: phpd.t и phpd. Что интересно, если значение phpd отлично от единицы или On, ionCube вылетает на зашифрованных файлах.
А еще у ionCube есть несколько недокументированных функций:
_dyuweyrj4()— при вызове без аргументов выдаёт «умные фразы» типаDo good, reap good; do evil, reap evil.илиA rat who gnaws at a cat's tail invites destruction._dyuweyrj4r()— аналогично предыдущей;ioncube_loader_iversion()— возвращает версию ionCube Loader в числовом виде:XYYZZ(например, 3.3.20 будет 30320);ioncube_file_not_permissioned()— судя по всему, эта функция оставлена для обратной совместимости со старыми скриптами: выдаёт ошибку видаThe file %s is not permissioned for this server._il_exec()— а это очень интересная функция: просто так её не вызвать. Но именно она ответственна за выполнение зашифрованного содержимого.
Окт
2010
Создание пользовательских классов из расширений PHP
Задача: нужно создать класс из расширения PHP, при этом созданный класс должен быть виден только в пределах выполнения одного запроса. При этом должно поддерживаться наследование классов, реализация интерфейсов, а также автоматическая загрузка классов (spl_autoload_register/__autoload).
Зачем это нужно: расширения PHP/Zend обычно гораздо быстрее PHP-кода. Капитан Очевидность не может не заметить, что вынесение критичных по быстродействию и потреблению памяти участков кода в расширение PHP позволяет снизить объём потребляемой памяти («родные» типы данных языка C компактнее zval) и увеличить быстродействие (машинный код выполняется явно быстрее интерпретируемого).
Поддержка автоматической загрузки полезна, если, например, используется фреймворк наподобие Kohana, позволяющий расширять функциональность системных классов без изменения их кода (что достигается благодаря использованию каскадной файловой системы). Далее »
Автор: Wandering Soul, опубликовано в: Zend, комментариев: 3Окт
2010
Особенности работы функции checkdnsrr()
Функция checkdnsrr() используется для проверки существования записей DNS. Например, фреймворк Kohana использует эту функцию для проверки наличия MX-записи домена, указанного в адресе электронной почты.
Тем не менее, существуют некоторые подводные камни, связанные с использованием данной функции, о которых разработчикам нужно знать. Далее »
Автор: Wandering Soul, опубликовано в: PHP, комментариев: нетСен
2010
Небуферизованные запросы: снижаем потребление памяти WordPress
Пиковое потребление оперативной памяти WordPress можно снизить приблизительно два раза и практически бесплатно. В чём секрет? В использовании правильных функций для работы с базой данных.
Опытные программисты знают, что API MySQL предоставляет два варианта работы с результатом запроса:
- Последовательная обработка результата — при этом не происходит никакой буферизации результата, данные отдаются от сервера клиенту, минуя временные таблицы и буфера. В этом случае обработка результатов может производиться только последовательно.
- Буферирование результата запроса — результат полностью читается во временный буфер, что позволяет осуществлять произвольный доступ к результату.
Сен
2010
DoS для PHP через imap_fetchbody
Как оказалось, если передать функции imap_fetchbody() параметр $secton, длина которого больше 1004 байт, PHP падает по segmentation fault. На некоторых конфигурациях с применением некоторых усилий (подробности, понятное дело, разглашаться не будут) получалось вместе с PHP положить и Apache. Далее »
Авг
2010
Быдлокодеры хреновы :-(
Возился сейчас с расширением Memcache; после очередного изменения кода сервер ушёл в глухую защиту и отказался реагировать на внешние раздражители. Далее »
Автор: Vladimir, опубликовано в: PHP, комментариев: 5Мар
2010
Исправление ошибки с поддержкой VERP в PHPMailer
PHPMailer — класс для отправки почты из PHP; используется многими известными приложениями, в том числе и WordPress.
VERP — техника, упрощающая автоматическое определение и удаление email-адресов из списков рассылки, сообщения которым не могут быть доставлены.
Поддержка VERP в PHPMailer хоть и реализована, но не работает. Далее »
Автор: Vladimir, опубликовано в: PHP, комментариев: нетФев
2010
Патч для php-cgi, позволяющий конфигурировать значение listen backlog
По умолчанию значение listen backlog в php-cgi жёстко задано — 128. Это означает, что PHP не сможет обработать более 128 запросов одновременно (точнее, что очередь запросов не сможет превысить данного значения). Я столкнулся с тем, что 128 — это мало.
Для тех, кто столкнулся с данной проблемой, но по каким-либо причинам не хочет/не может поставить php-fpm (в котором backlog конфигурируется), я сделал небольшой патч. Далее »
Автор: Vladimir, опубликовано в: C/C++, PHP, комментариев: 10Янв
2010
Простой DoS для PHP
Копался сегодня во внутренностях PHP, и обнаружил такую вещь: функция zend_hash_sort() (она вызывается из функций типа usort() и прочих) сортирует не сам массив (в терминах Zend Engine), а массив (в терминах языка C) указателей на элементы массива (в терминах Zend Engine), а потом по отсортированному C-массиву пересоздаёт PHP-массив. Далее »
Окт
2009

Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.

