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