Связанный вопрос: Периодическая ошибка FastCGI и Apache 500
У меня решение не работает.
У меня есть приложение Laravel 5.1 (без проблем работало на других серверах), работающее на свежем Сервер Ubuntu 14.04 с участием Apache 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: ошибка] [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: ошибка] [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
Если PHP не работает только с определенными исходными файлами, наиболее вероятная причина заключается в том, что какой-либо ускоритель кода PHP (кеш кода операции), такой как Xcache, APC или eAccelerator, имеет проблемы с файлом. Это может быть связано с ошибками в ускорителе или в самом PHP.
Вы можете попробовать запустить свой скрипт через интерфейс командной строки PHP (php-cli
command), поскольку PHP CLI не использует никаких ускорителей.