Сброс соединения с помощью peer: mod_fcgid: ошибка чтения данных с сервера FastCGI

У меня возникла проблема с PHP, где мое приложение пытается запустить файл резервной копии php и вдруг получает HTTP Error 500 Code. Я проверил журналы и это то, что он говорит.

[Tue Aug 28 14:17:28 2012] [warn] [client xxxx] (104) Сброс соединения с помощью peer: mod_fcgid: ошибка чтения данных с сервера FastCGI, референт: http://example.com/backup/backup.php
[Вт 28 авг 14:17:28 2012] [ошибка] [клиент xxxx] Преждевременный конец заголовков скриптов: backup.php, referer: http://example.com/backup/backup.php

Кто-нибудь знает, как это исправить? Я действительно застрял здесь и не могу найти решение в Интернете.

Надеюсь, кто-нибудь может поделиться своими знаниями.

Благодарю. Джеймс

Мне удалось это решить, добавив FcgidBusyTimeout . На всякий случай, если у кого-то есть аналогичная проблема со мной.

Вот мои настройки на моем apache.conf:

<VirtualHost *:80> ....... <IfModule mod_fcgid.c> FcgidBusyTimeout 3600 </IfModule> </VirtualHost> 

У меня были очень похожие ошибки в файлах журнала Apache2:

 (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server Premature end of script headers: phpinfo.php 

После проверки сценариев оболочки и настроек Apache2 я понял, что / var / www / не имеет соответствующих разрешений. Таким образом, скрипты FCGId Wrapper не могли быть прочитаны вообще.

 ls -la /var/www drwxrws--- 5 www-data www-data 4096 Oct 7 11:17 . 

Разумеется, для моего сценария требуется chmod -o+rx /var/www , поскольку используемые пользователи SuExec не являются членами группы пользователей www-data – и, конечно, они не должны быть членами по соображениям безопасности.

если вы хотите установить версию PHP <5.3.0, вы должны заменить

 --enable-cgi 

с:

 --enable-fastcgi 

в вашем ./configure заявлении, выдержка из документа php.net:

 --enable-fastcgi 

Если это разрешено, модуль CGI будет построен с поддержкой FastCGI. Доступно с PHP 4.3.0

Начиная с PHP 5.3.0 этот аргумент больше не существует и активируется –enable-cgi. После компиляции ./php-cgi -v должен выглядеть так:

 PHP 5.2.17 (cgi-fcgi) (built: Jul 9 2013 18:28:12) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies 

УВЕДОМЛЕНИЕ (cgi-fcgi)

Сценарий знаменитого Moodle «replace.php» также может генерировать эту ситуацию. Для меня это потребовало времени для запуска, а затем с сообщением 500 в браузере, а также с указанным выше сообщением об ошибке в моем файле журнала ошибок apache.

Я последовал за @ james-мудрым ответом: FcgidBusy читается в документации Apache . Я попробовал это: удвоил количество времени, которое apache предоставил моему сценарию для запуска, вставив следующую строку в /etc/apache2/mods-available/fcgid.conf

 FcgidBusyTimeout 600 

Затем я перезапустил Apache и снова попытался запустить скрипт replace.php.

К счастью, на этот раз экземпляр сценария завершился, поэтому для моих целей это послужило решением.

У меня была эта проблема и я понял, что файл cgi-bin / php-fcgi не имеет прав исполнения.

Он имел режим 644, тогда как режим должен иметь 755.

Установка правильного режима была невозможна (вероятно, потому, что файл был открыт или sth), поэтому я скопировал этот файл из другого каталога домена, где у него уже были права, и все исправлено.

Я столкнулся с этим при отладке ошибки, связанной с virtualmin / apache.

В моем случае я запускаю virtualmin и имел в своей php.ini виртуальной машины safe_mode = On.

В журнале ошибок моей виртуальной машины я получал сброс соединения fcgi через peer: mod_fcgid: ошибка чтения данных с сервера FastCGI

В моем главном журнале ошибок apache я получал: PHP Fatal error: директива «safe_mode» больше не доступна на PHP в Unknown в строке 0

В моем случае я просто устанавливаю safe_mode = Off в моем php.ini и перезапущенном apache.

stackoverflow.com/questions/18683177/where-to-start-with-deprecated-directive-safe-mode-on-line-0-in-apache-error

Не в этом вопросе вопрос адеектов, но часто:

Что означает ошибка «преждевременного окончания заголовков скриптов» ?

Эта ошибка означает, что вызов FCGI неожиданно вышел из строя.

В некоторых случаях это означает, что сценарий «backup.php» сработал.

Как это исправить?

Если причиной сбоя был сценарий, исправьте скрипт так, чтобы он не разбился. Тогда эта ошибка также исправлена. Чтобы выяснить, если и почему сценарий аварийно завершает работу, вам нужно отладить его. Например, вы можете проверить журнал ошибок PHP. Ошибки, зарегистрированные в STDERR, обычно идут в обработчик ошибок FCGI.

У меня была та же проблема с длинными сценариями с сообщениями об ошибке «Преждевременный конец заголовков скриптов: index.php» и «Сброс соединения с помощью peer: mod_fcgid: ошибка чтения данных с сервера FastCGI» в error_log. После нескольких часов тестирования это помогает мне (CentOS 6, PHP-FPM 7, Plesk 12.5.30):

отредактируйте файл конфигурации:

/etc/httpd/conf.d/fcgid.conf

Установите более высокое время работы. В моем случае 600 секунд

создайте новую запись:

FcgidBusyTimeout 600

адаптировать следующие записи:

FcgidIOTimeout 600

FcgidConnectTimeout 600

перезапустить httpd:

перезагрузка службы httpd

В версиях CentOS suexec компилируется для запуска только в / var / www. Если вы пытаетесь установить DocumentRoot где-то еще, вам нужно перекомпилировать его – ошибка в журнале apache: (104) Сброс соединения через peer: mod_fcgid: ошибка чтения данных с сервера FastCGI Преждевременный конец заголовков скриптов: php5.fcgi

Просто установите php5-cgi в debian

  sudo apt-get install php5-cgi 

в Центосе

  sudo yum install php5-cgi 

Проверьте / var / lib / php / session и его разрешения. Этот каталог должен быть доступен для записи пользователем, чтобы сеанс можно было сохранить

Как уже упоминалось, это может происходить из-за проблем с обработчиком fcgi. Если вы используете suexec – не забудьте проверить, включен ли в этот модуль этот модуль.

У меня такая же проблема (с установленным Plesk 12). Однако, когда я переключился с выполнения PHP как FastCGI на Apache Module, сайт работал.

Проверьте мой журнал suexec:

 $ cd /var/log/apache2/ $ less suexec.log 

Когда вы найдете что-то вроде этого:

 [2015-03-22 10:49:00]: directory is writable by others: (/var/www/cgi-bin/cgi_wrapper) [2015-03-22 10:49:05]: uid: (10004/gb) gid: (1005/1005) cmd: cgi_wrapper 

попробуйте эти команды

 $ chown root:root /var/www/cgi-bin/cgi_wrapper $ chmod 755 /var/www/cgi-bin/cgi_wrapper $ shutdown -r now 

как корень.

Надеюсь, это может вам помочь.