Ars Longa, Vita Brevis

На сервере с CentOS 5.1 столкнулся с такой проблемой: Apache при открытии PHP-страниц с завидным постоянством писал в лог следующие ошибки:

[-]
View Code Text
*** glibc detected *** /usr/sbin/httpd: corrupted double-linked list: 0x09a939f8 ***

К сожалению, поиск в Google практических результатов не дал: ошибка могла случаться на любом железе и любой версии Linux. Больше всего жаловались (не)счастливые обладатели Zend Optimizer.

Обновил CentOS до 5.2 (в обновлении пришёл новый glibc), но это не помогло. Странно, я видел много серверов, работающих на CentOS без таких ошибок.

Пытаясь найти минимальную конфигурацию, на которой бы воспроизводились ошибки, я отключал один за одним модули Apache, модули PHP, но всё тщетно. Когда же я отключил mod_php, ошибка пропала — на статических страницах всё было прекрасно. Читать статью «Обновление PHP до 5.2.x в CentOS 5» полностью…

Вчера вечером нашёл, а сегодня утром окончательно разобрался с одной очень интересной ошибкой плагина All in One SEO Pack. Ошибка проявляется в версии 1.4.6.15, но, возможно, более ранние версии тоже ей подвержены. Для проявления ошибки необходима определённая структура пермалинков: я столкнулся с ошибкой на такой структуре: /%category%/%postname%/. Тем не менее, структура — условие необходимое, но не достаточное: я не на всех сайтах смог воспроизвести ошибку. Возможно, причиной этому являются сторонние темы и/или плагины. Тем не менее, в причинах её возникновения я разобрался.

Проявляется ошибка следующим образом: при переходе на сайт по неверной ссылке (например, http://example.com/wpadmin) отображается пустая страница, а в логе ошибок присутствует примерно такое сообщение:

[-]
View Code Text
PHP Catchable fatal error:  Object of class WP_Error could not be converted to string in /wp-content/plugins/all-in-one-seo-pack/all_in_one_seo_pack.php on line 950

Читать статью «All in One SEO Pack 1.4.6.15: пустой экран при неверном запросе» полностью…

Сегодня в WordPress открылся баг (с самым высоким приоритетом — "highest omg bbq"). Симптомы его следующие: при публикации поста выдаётся ошибка вида:

[-]
View Code Text
PHP Catchable fatal error: Object of class WP_Error could not be converted to string in /wp-includes/comment.php on line 1264

Причина ошибки заключается в том, что WordPress недостаточно тщательно проверяет результат, который возвращают функции wp_remote_get()/wp_remote_post().

Ошибка проявляется, когда функция WP_Http::chunkTransferDecode() возвращает ошибку. Я не лез в дебри функции: возможно, сервер вернул что-то не то, возможно, декодер содержит ошибку, а может быть, виновата другая функция — важно здесь несколько другое: элемент body возвращаемого результата может не быть скалярным.

Переходим к исправлению ошибки. Читать статью «WordPress 2.7: фатальная ошибка при публикации статьи» полностью…

Дек 7, 2008

Повод для гордости

Рубрика: WordPress
Метки: , , , ,
Vladimir

Сегодня мой патч попал в репозиторий WordPress (сhangeset 10091). Патч исправляет ошибку #8335 ("Редактирование страниц отсекает специальные символы").

И, хотя ошибка была серьёзной, исправление оказалось детским: нужно было удалить одну пустую(!) строку в файле wp-admin/edit-page-form.php. Были бы все баги такими :-)

APC (он же Alternative PHP Cache) — бесплатное расширение к PHP, предназначенное для оптимизации промежуточного кода и кэширования данных и компилированного байт-кода в разделяемой памяти.

Я заинтересовался APC с позиции его возможного применения в плагине WP File Cache, но при реализации модуля столкнулся с некоторыми особенностями (читай: ошибками), о которых документация умалчивает. Читать статью «Недокументированные особенности APC» полностью…