07.11.2010

FastCGI: протрите фару, пинните по колесу.

Все, мы по сто раз сталкивались с ошибкой 500 Internal Server Error: A generic error message, given when no more specific message is suitable.
Иногда, особенно, если Apache работает не как mod_php, а как mod_fcgid, при этом в логе:Premature end of script headers
Что делать? Теоретически это скрипт не успел до конца обработаться. Но причин для этого можеть быть море. Один мой товарищ Саша Ребриков, большой маг и волшебник по части чего-нибудь напрограммировать или починить, умудрялся диагностировать ошибку и находить точную причину. Но ему помогал космос, как он сам говорит, а мы на это рассчитывать не можем.

Тут буду собирать список научных тыков, один из которых случайно может попасть в точку и починить:


1) Проверить права и владельца на собственный пользовательский интерпретатор php
2) Сделать repair базы данных (у скрипта может не получаться забирать данные с нее и он тормозит). Если Вы используете ISPmanager, то для этого в разделе даже кнопочка "аптечка" есть
3) Логи /var/log/apache2{httpd}/suexec.log тоже иногда говорят причину
4) Иногда понять, что причина не в говнокоде можно просто создав рядом файлик <?php phpinfo(); ?> и просмотрев его через браузер. Если и эта простота не работает, то скорее всего пункт 1) был пропущен.
5) Действуют ограничения на количество процессов. Тут уж надо смотреть в зависимости от того, кто какую систему для этого использует. Значит Apache задачу получил, а родить форк не смог.
6) Проверить есть ли свободная память для рождения нового fcgid-процесса.


Ну и если кто еще что знает - прошу насрать в комменты.

Комментариев нет:

Отправить комментарий