Соединение 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
Кто-нибудь знает, как это исправить? Я действительно застрял здесь и не могу найти решение в Интернете.
Надеюсь, что кто-то может поделиться своими знаниями.
Спасибо.
Джеймс
Ответы
Ответ 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.
Я надеюсь, что это может вам помочь.