Назад | Перейти на главную страницу

FastCGI: «связь с сервером прервана: чтение не удалось» только для одного конкретного файла

Связанный вопрос: Периодическая ошибка 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 не использует никаких ускорителей.