Мой сервер Ubuntu настроен с использованием Apache 2.2.8 и PHP 5.2.4-2ubuntu5.18 в режиме FastCGI. Все работает хорошо, за исключением того, что я вижу 500 ошибок, которые, похоже, исходят только от ботов, обращающихся к серверу .. например (access.log):
x.125.71.104 - - [16 / ноя / 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 / ноя / 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 / ноя / 2011: 20: 57: 17 +1100] "GET / HTTP / 1.1" 500101 "-" "Mozilla / 5.0 (совместимый; Googlebot / 2.1; +http://www.google.com/bot.html) "
x.55.39.85 - - [14 / ноя / 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? Если кто-нибудь может дать совет по этому поводу, мы будем очень признательны!
Райан
Вы хотеть боты индексируют ваш сайт? Если бы нет, я бы об этом не беспокоился. Если да, проверьте журналы ошибок 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?»