Подтвердить что ты не робот

Соединение reset by peer: mod_fcgid: ошибка чтения данных с сервера FastCGI

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

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

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

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

Спасибо. Джеймс

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

если вы хотите установить версию 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)

Ответ 4

Не в этот вопрос задает адепты, но часто:

Что означает "преждевременный конец ошибки заголовка script"?

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

В некоторых случаях это означает, что script "backup.php" сработал.

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

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

Ответ 5

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

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

FcgidBusyTimeout 600

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

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

Ответ 6

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

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

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

Ответ 7

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

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

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

В моем главном журнале ошибок apache я получал: PHP Неустранимая ошибка: директива "safe_mode" больше не доступна в PHP в Unknown on line 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

Ответ 8

У меня была та же проблема с длинными сценариями с сообщениями об ошибках "Недопустимый конец заголовков script: index.php" и "Connection reset by 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 restart

Ответ 9

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

Ответ 10

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

sudo apt-get install php5-cgi

в Centos

sudo yum install php5-cgi

Ответ 11

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

Ответ 12

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

Ответ 13

У меня такая же проблема (с установленным 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

как root.

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