Неизвестная ошибка Apache2 + PHP5 FastCGI 500.. вызвана поисковыми роботами?

Мой сервер Ubuntu настроен с Apache 2.2.8 и PHP 5.2.4-2ubuntu5.18 в режиме FastCGI. Все работает хорошо, за исключением того, что я вижу 500 ошибок, которые появляются только от ботов, обращающихся к серверу... например (access.log):

x.125.71.104 - - [16 / Nov / 2011: 10: 27: 39 +1100] "GET / HTTP / 1.1" 500 41377 "-" "Mozilla / 5.0 (совместимо; Baiduspider / 2.0; + http://www.baidu.com/search/spider.html) "

x.40.103.239 - - [16 / Nov / 2011: 11: 05: 56 +1100] "GET / HTTP / 1.0" 500 14717 "-" "Mozilla / 5.0 (совместимо; mon.itor.us - бесплатная служба мониторинга; http://mon.itor.us/) "

x.249.67.114 - - [14 / Nov / 2011: 20: 57: 17 +1100] "GET / HTTP / 1.1" 500 101 "-" "Mozilla / 5.0 (совместимо; Googlebot / 2.1; + http://www.google.com/bot.html) "

x.55.39.85 - - [14 / Nov / 2011: 19: 31: 06 +1100] "GET / HTTP / 1.1" 500 7032 "-" "msnbot / 2.0b (+ http://search.msn.com/msnbot.htm)._"

Насколько я понимаю, ошибка 500 будет возникать, когда процесс PHP не сможет ответить на Apache, что может быть вызвано фатальной ошибкой PHP или если в PHP закончились процессы... поэтому я предполагаю, что либо боты работают слишком жесткий сервер, убивающий процессы PHP, или что-то в заголовке запроса от ботов вызывает фатальную ошибку в моем сценарии PHP? Если кто-то может дать совет по этому вопросу, он будет очень признателен!

Райан

3 ответа

Вы хотите, чтобы боты проиндексировали ваш сайт? Если бы не я, я бы об этом не беспокоился. Если вы делаете, проверьте журналы ошибок PHP (/var/log/php обычно является хорошим местом по умолчанию, чтобы посмотреть) и посмотреть, что заставляет PHP отключаться для ботов.

Они могут не предоставлять параметры GET или данные POST скрипту, который требует, чтобы он функционировал должным образом. В этом случае я бы лучше обработал запрос, возможно, вернув 404 если сценарий переносит запрос к БД (поскольку ничего не может быть найдено, если вы не предоставите соответствующие параметры). Если они делают что-то еще более странное, возможно, возвращая 400 Bad Request в порядке.

Для тех, у кого 500 ошибок, первая строка в этом коде должна указывать на сокет Unix, а не на адрес / порт TCP/IP - это на Ubuntu 12.10.x - если вы загляните внутрь /etc/php5/fpm/pool.d/www.conf вы обнаружите, что FPM настроен на прослушивание сокета Unix.

FastCgiExternalServer /var/www/php5.external -socket /var/run/php5-fpm.sock
AddHandler php5-fcgi .php
AddHandler php5-fcgi .wfr
Action php5-fcgi /usr/lib/cgi-bin/php5.external
Alias /usr/lib/cgi-bin/ /var/www/

Зайдите на этот сайт, чтобы узнать, есть ли на нем нужная вам информация. http://redmine.lighttpd.net/projects/1/wiki/Docs:PerformanceFastCGI

Вплоть до того места, где написано: "Почему мое php-приложение время от времени возвращает 500?"

Другие вопросы по тегам