Сопутствующий вопрос: Периодически возникают ошибки FastCGI и Apache 500
Это решение мне не подходит.
Проблема:
У меня есть приложение Laravel 5.1 (которое без проблем эксплуатировалось на других серверах), работающее на новой версииUbuntu 14.04 серверсАпач 2.4.7и PHP черезPHP-FPM.
Все работает нормально, пока в приложении не вызывается определенный файл:
$compiledPath = __DIR__.'/cache/compiled.php';
if (file_exists($compiledPath)) {
require $compiledPath; // this causes a "500 Internal Server Error"
}
Это файл, специфичный для Laravel.создано автоматическисамой фреймворком, чтобы немного ускорить процесс (чтобы это не было ошибкой в моем коде), он действительно существует, и у меня есть полные права доступа. Этооколо 600кБпо размеру. Когда я удаляю его, все работает нормально. Но когда я говорю Laravel создать его снова, а затем нажимаю на любой маршрут приложения, я получаю "500 Internal Server Error" со следующими записями в журнале:
[fastcgi:error] [pid 14334] (104) Соединение сброшено узлом: [client xxx.xxx.xxx.xxx:41395] FastCGI: связь с сервером "/var/www/clients/client1/web1/cgi-bin/php5-fcgi-yyy.yyy.yyy.yyy-80-domain.com" прервана: чтение не удалось
[fastcgi:error] [pid 14334] [client xxx.xxx.xxx.xxx:41395] FastCGI: получены неполные заголовки (0 байт) от сервера "/var/www/clients/client1/web1/cgi-bin/php5-fcgi-yyy.yyy.yyy.yyy-80-domain.com"
[fastcgi:error] [pid 14334] (104) Соединение сброшено узлом: [client xxx.xxx.xxx.xxx:41395] FastCGI: связь с сервером "/var/www/clients/client1/web1/cgi-bin/php5-fcgi-yyy.yyy.yyy.yyy-80-domain.com" прервана: чтение не удалось
[fastcgi:error] [pid 14334] [client xxx.xxx.xxx.xxx:41395] FastCGI: получены неполные заголовки (0 байт) от сервера "/var/www/clients/client1/web1/cgi-bin/php5-fcgi-yyy.yyy.yyy.yyy-80-domain.com"
Что я пробовал:
Я попробовал решение в связанном вопросе, упомянутом выше, которое также представляет большинство других предложений относительно этой проблемы, которые я смог найти: Поиграйтесь с общими настройками PHP-FPM, чтобы назначить больше ресурсов. В принятом ответе также упоминается возможность полного отказа от FastCGI, но я не хочу этого делать. Поэтому я поигрался со значениями, но безуспешно.
Нагрузка на сервер отсутствует, поскольку я им пользуюсь один, поэтому я сомневаюсь, что проблема в доступных ресурсах (это VPS с 12 ГБ оперативной памяти).Может ли это быть как-то связано с размером файла?Это единственный PHP-файл такого размера.
Я смог воспроизвести проблему на 2 разных серверах с одинаковой конфигурацией. Это произошлонетпроисходят на сервере Ubuntu 12.04 с Apache 2.2 с FastCGI.
Моя текущая конфигурация:
PHP-FPM:
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 5
pm.max_requests = 0
<IfModule mod_fastcgi.c>
...
Alias /php5-fcgi /var/www/....
FastCgiExternalServer /var/www/.... -idle-timeout 300 -socket /var/lib/php5-fpm/web1.sock -pass-header Authorization
</IfModule>
php.ini
memory_limit = 512M
output_buffering = on
решение1
Если PHP дает сбой только на определенных исходных файлах, наиболее вероятной причиной является то, что какой-либо ускоритель кода PHP (кэш опкода), например Xcache, APC или eAccelerator, имеет проблемы с файлом. Это может быть связано с ошибками в ускорителе или в самом PHP.
Вы можете попробовать запустить свой скрипт через интерфейс командной строки PHP ( php-cli
команда ), поскольку PHP CLI не использует никаких ускорителей.