Ошибка в работе PHP с модулем pecl-APC
После недавнего обновления на сервере под управлением FreeBSD 8.1-RELEASE архитектуры amd64, при работе web-сервера apache-2.2.17 с прикрученным языком php5-5.3.5 при обращении к работающему на нем сайте вместо его содержимого выскочила ошибка:Fatal error: Unknown: apc_fcntl_unlock failed: in Unknown on line 0 |
Точно такая же ошибка записывалась в лог работы web-сервера apache22. При последнем обновлении был установлено/обновлено новое расширение языка PHP5 – www/pecl-APC. Оно позволяет осуществлять кэширование и оптимизацию промежуточного кода, исполняемого в PHP. На момент появления ошибки версия pecl-APC была 3.1.9.
В моем случае, для устранения данной ошибки понадобилось пересобрать данное расширение с опцией:
[X] SEMAPHORES Enable sysv IPC semaphores (default: fcntl())
Рис. 1 (нажмите для увеличения)
Для этого необходимо выполнить следующее:
# cd /usr/ports/www/pecl-APC # make config
Отметить необходимую опцию [X] SEMAPHORES и установить порт:
# make install clean
Теперь необходимо убедиться, что вызов данного расширения в extensions.ini осуществляется только один раз.
# less /usr/local/etc/php/extensions.ini | grep extension=apc.so extension=apc.so
Если у вас данное расширение вызывается дважды – удалите дублирующую запись (extension=apc.so) в файле /usr/local/etc/php/extensions.ini.
Нам осталось только перегрузить наш web-сервер apache22 и проверить нормальную работу нашего сайта и файл лога работы apache22 на наличие данной (или иной) ошибки.
# /usr/local/etc/rc.d/apache22 restart Performing sanity check on apache22 configuration: Syntax OK Stopping apache22. Waiting for PIDS: 65024. Performing sanity check on apache22 configuration: Syntax OK Starting apache22.
# less /var/log/apache22/httpd-error.log [Mon May 22 10:39:38 2011] [notice] caught SIGTERM, shutting down [Mon May 22 10:39:40 2011] [notice] Digest: generating secret for digest authentication ... [Mon May 22 10:39:40 2011] [notice] Digest: done [Mon May 22 10:39:40 2011] [notice] Apache/2.2.17 (FreeBSD) DAV/2 PHP/5.3.5 with Suhosin-Patch configured -- resuming normal operations
После указанных операций сайт стал отображаться в рабочем режиме, и ошибок в логах больше не возникало.
Вот и все, удачи!