PHP Неустранимая ошибка: require(): невозможно разблокировать блокировку pthread

Я использую LAMP на Debian Linux. Apache 2.2.22-12, PHP 5.4.4.

Иногда я получаю эту ошибку, а затем я не могу перезагрузить страницу или открывать страницы, включая файл с этой ошибкой. После того, как я получил такую ​​ошибку, я не смог перезапустить apache

Перезапуск веб-сервера: apache2 (98) Адрес уже используется: make_sock: не удалось привязать к адресу [::]: 80

(98) Адрес уже используется: make_sock: не удалось привязать к адресу 0.0.0.0:80 нет доступных гнезд для прослушивания, выключение

Невозможно открыть журналы

Не удалось выполнить действие 'start'.

В журнале ошибок Apache может быть больше информации.  не удалось!

В файле журнала apache:

[Wed Nov 21 15:07:55 2012] [warn] дочерний процесс 4020 еще не вышел, отправив SIGTERM

[Wed Nov 21 15:07:55 2012] [warn] дочерний процесс 4021 еще не вышел, отправив SIGTERM

[Wed Nov 21 15:07:55 2012] [warn] дочерний процесс 4022 еще не вышел, отправив SIGTERM

[Wed Nov 21 15:07:57 2012] [ошибка] дочерний процесс 1309 еще не вышел, отправив SIGKILL

[Wed Nov 21 15:07:57 2012] [error] дочерний процесс 1310 все еще не вышел, отправив SIGKILL

[Wed Nov 21 15:07:57 2012] [error] дочерний процесс 1311 все еще не вышел, отправив SIGKILL

И журнал хоста:

[Wed Nov 21 12:21:24 2012] [error] [клиент 127.0.0.1] PHP Неустранимая ошибка: require(): невозможно разблокировать блокировку pthread в ~/www/yii/yii-1.1.11.58da45/framework/base/CApplication.php в строке 127

Существует

$config=require($config);

Или:

[Wed Nov 14 21:04:26 2012] [error] [клиент 127.0.0.1] PHP Неустранимая ошибка: require_once(): невозможно разблокировать блокировку pthread в ~/projects/politiya/index.php в строке 14

Существует:

require_once($game_loader);

Я удалил php-apc, и теперь лампа работает хорошо.

Ответ 1

Fix

Как упоминалось здесь, мне пришлось быстро удалить и переустановить apc (буквально занимает 5 секунд):

1 sudo pecl uninstall apc

2 sudo pecl install apc

BUT измените no, который уже заполнен для мьютексов pthread в yes

AND измените yes, который уже заполнен для блокировок чтения/записи pthread в no.

Ответ 2

Эта ошибка происходит из-за "ошибки блокировки" в APC. A страница отчета об ошибке php сообщает, что эта ошибка исправлена ​​в APC 3.1.8

Также мы видим журналы изменений APC здесь

Ответ 3

Просто FYI (в ответ на комментарий OMG о ошибке APC), я запускаю APC 3.1.13 и PHP 5.4.17, и у меня все еще есть ошибка:

unable to obtain pthread lock (EDEADLK)

Ответ 4

Это означает, что выполняется какой-то процесс, который использует этот порт, поэтому попробуйте убить этот процесс

как получить процесс

например: ps -ef | grep httpd

затем уничтожить процесс

например, идентификатор процесса kill -9

----------------------- ИЛИ ----------------------

порт 80 используется другой службой, поэтому найдите и измените system-config-httpd.conf: system-config-httpd.conf system-config-httpd.conf. все это, перезапустите httpd: /etc/init.d/httpd start