web-dev-qa-db-ja.com

ピアによる接続のリセット:mod_fcgid:FastCGIサーバーからのデータ読み取りエラー

アプリがphpバックアップファイルを実行しようとしてPHPで問題が発生し、突然HTTPエラー500コードを取得します。私はログとこれが言っていることをチェックしました。

[Tue Aug 28 14:17:28 2012] [warn] [client xxxx](104)Connection reset by peer:mod_fcgid:Error reading data from FastCGI server、referer: http://example.com/backup /backup.php
[2012年8月28日14:17:28] [エラー] [クライアントxxxx]スクリプトヘッダーの早すぎる終了:backup.php、リファラー: http://example.com/backup/backup .php

誰でもこれを修正する方法を知っていますか?私は本当にここで立ち往生していて、インターネットで解決策を見つけることができません。

誰もが知識を共有できることを願っています。

ありがとう。ジェームス

47
James Wise

FcgidBusyTimeoutを追加することでこれを解決できました。誰かが私と同様の問題を抱えている場合に備えて。

Apache.confの設定は次のとおりです。

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

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 .

使用するSuExecユーザーはchmod -o+rx /var/wwwユーザーグループのメンバーではないため、私のシナリオではwww-dataが必要でした。もちろん、セキュリティ上の理由からメンバーではないはずです。

11
Oliver Hader

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
reiner23fx

有名なMoodle "replace.php"スクリプトもこの状況を生成できます。私にとっては、実行に時間がかかり、ブラウザで500メッセージが表示され、Apacheエラーログファイルに上記のエラーメッセージが表示されて失敗しました。

@ james-wise answer:FcgidBusyApache documentation で読みやすく説明されています。私はこれを試しました:/etc/Apache2/mods-available/fcgid.confに次の行を挿入することで、Apacheがスクリプトの実行に与える時間を2倍にしました

FcgidBusyTimeout 600

次に、Apacheを再起動し、replace.phpスクリプトを再度実行しようとしました。

幸い、今回はスクリプトインスタンスが完了するまで実行されたため、私の目的ではこれが解決策となりました。

2
owenmck

CentOSリリースでは、suexecは/ var/wwwでのみ実行されるようにコンパイルされています。 DocumentRootを別の場所に設定しようとすると、再コンパイルする必要があります。Apacheログのエラーは次のとおりです。

2
Jivko Todorov

この質問者の場合 ではないが、多くの場合:

「スクリプトヘッダーの早すぎる終了」エラーはどういう意味ですか?

このエラーは、FCGI呼び出しが予期せず終了したことを意味します。

場合によっては、スクリプト「backup.php」がクラッシュしたことを意味します。

これを修正する方法は?

スクリプトのクラッシュが原因である場合は、クラッシュしないようにスクリプトを修正します。その後、このエラーも修正されます。スクリプトがクラッシュするifおよびwhyを見つけるには、デバッグする必要がありますそれ。たとえば、PHPエラーログを確認できます。 STDERRに記録されたエラーは、通常、FCGIのエラーハンドラーに入ります。

2
hakre

Virtualmin/Apache関連のエラーをデバッグしているときに、この問題に遭遇しました。

私の場合、virtualminを実行していて、仮想マシンのphp.ini safe_mode = Onで実行しています。

仮想マシンのエラーログで、ピアによってfcgi接続がリセットされていました:mod_fcgid:FastCGIサーバーからのデータ読み取りエラー

私のメインのApacheエラーログで私が得ていた:PHP致命的なエラー:ディレクティブ 'safe_mode'は行0のUnknownのPHPで利用できなくなりました

私の場合、php.iniでsafe_mode = Offに設定し、Apacheを再起動しました。

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

2
Lance

この問題が発生し、ファイルcgi-bin/php-fcgiには実行権限がないことがわかりました。

644モードがありますが、755モードが必要です。

正しいモードを設定することは不可能であったため(おそらくファイルが開かれた、またはsthだったため)、適切な権限が既に設定され、すべてを修正した別のドメインディレクトリからそのファイルをコピーしました。

2
sEver

Error_logの「スクリプトヘッダーの早期終了:index.php」および「ピアによる接続のリセット:mod_fcgid:FastCGIサーバーからのデータの読み取りエラー」というエラーメッセージで、長時間実行されるスクリプトでも同じ問題が発生しました。数時間のテストの後、これは私に役立ちます(CentOS 6、PHP-FPM 7、Plesk 12.5.30):

構成ファイルを編集します。

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

より長い実行時間を設定します。私の場合、600秒

新しいエントリを作成します。

FcgidBusyTimeout 600

次のエントリを調整します。

FcgidIOTimeout 600

FcgidConnectTimeout 600

httpdを再起動します。

サービスhttpdの再起動

2
joruf81

Php5-cgiをdebianにインストールするだけです

Sudo apt-get install php5-cgi

centosで

Sudo yum install php5-cgi
1
Mancy

最大実行時間を600秒に増やしました。

plesk 17 - domain effected

1
Stephen Murray

私は別の簡単な解決策で同じ問題を抱えていました。

問題

buntuの質問に関するこの質問 に対する受け入れられた答えに従ってPHP 5.6をインストールしました。 Virtualminを使用して特定の仮想サーバーをPHP 5.5からPHP 5.6に切り替えた後、500内部サーバーエラーを受け取り、Apacheエラーログに同じエントリがありました。

[Tue Jul 03 16:15:22.131051 2018] [fcgid:warn] [pid 24262] (104)Connection reset by peer: [client 10.20.30.40:23700] mod_fcgid: error reading data from FastCGI server
[Tue Jul 03 16:15:22.131101 2018] [core:error] [pid 24262] [client 10.20.30.40:23700] End of script output before headers: index.php

原因

シンプル:php5.6-cgi packetをインストールしませんでした。

修正する

パケットをインストールしてApacheをリロードすると、問題が解決しました。

  • Sudo apt-get install php5.6-cgiを使用している場合PHP 5.6

  • Sudo apt-get install php5-cgi異なるPHP 5バージョンを使用している場合

  • Sudo apt-get install php7.0-cgiを使用している場合PHP 7

次に、service Apache2 reloadを使用して構成を適用します。

1
user5626466

/ var/lib/php/sessionとその権限を確認してください。セッションを保存できるように、このディレクトリはユーザーが書き込み可能である必要があります

0
mangia

すでに述べたように、これはfcgiハンドラーのアクセス許可の問題が原因で発生する可能性があります。 suexecを使用している場合-Apacheでこのモジュールが有効になっているかどうかを確認することを忘れないでください。

0
kK-Storm

私の場合、PHPファイルにカスタム拡張機能を使用していたので、/etc/Apache2/conf-available/php7.2-fpm.confを編集して次のコードを追加する必要がありました。

    <FilesMatch ".+\.YOUR_CUSTOM_EXTENSION$">
        SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost"
    </FilesMatch>
0
Novo

私のような共有サーバーを使用している場合、ホストはメモリ制限に達した結果だと言ったため、スクリプトを強制終了し、このエラーで「スクリプトヘッダーの早期終了」が発生します。彼らは私にこれを紹介しました:

https://help.dreamhost.com/hc/en-us/articles/216540488-Why-did-procwatch-kill-processes-on-my-Shared-serv

メモリが増加すると、問題は解決しました。 wordpressのバックアッププラグインUpdraftは、おそらくその任務/設定が熱心だったと思います。

0
edindubai