55

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

[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

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

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

ありがとう。ジェームズ

4

18 に答える 18

32

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

これが私のapache.confの設定です:

<VirtualHost *:80>
.......
<IfModule mod_fcgid.c>
FcgidBusyTimeout 3600
</IfModule>
</VirtualHost>
于 2012-08-30T08:15:34.640 に答える
5

PHP バージョン < 5.3.0 をインストールする場合は、

--enable-cgi

と:

--enable-fastcgi

あなたの./configure声明では、php.net docからの抜粋:

--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)

于 2013-07-09T17:04:34.350 に答える
4

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

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

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

于 2013-09-27T08:06:21.630 に答える
2

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

次のエントリを適応させます。

FcgidIOタイムアウト 600

FcgidConnectTimeout 600

httpd を再起動します。

サービス httpd 再起動

于 2016-02-14T13:16:56.607 に答える
2

virtualmin/apache 関連のエラーをデバッグしているときに、これに遭遇しました。

私の場合、virtualmin を実行しており、仮想マシンの php.ini safe_mode=On に設定されています。

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

私のメインのApacheエラーログでは、次のようになっていました: PHP Fatal error: Directive 'safe_mode' is no longer available in PHP in Unknown on line 0

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

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

于 2015-09-20T11:48:29.320 に答える
2

この質問者のケースではありませんが、多くの場合:

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

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

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

これを修正する方法は?

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

于 2012-08-28T06:34:04.280 に答える
2

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

@james-wise の回答をフォローアップし ました。Apache のドキュメントFcgidBusyで読みやすく説明されています。私はこれを試しました:/etc/apache2/mods-available/fcgid.confに次の行を挿入することにより、Apacheがスクリプトを実行する時間を2倍にしました

FcgidBusyTimeout 600

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

幸いなことに、今回はスクリプト インスタンスが最後まで実行されたので、私の目的ではこれが解決策として役立ちました。

于 2013-03-24T03:14:10.723 に答える
1

Debianにphp5-cgiをインストールするだけです

sudo apt-get インストール php5-cgi

セントスの

sudo yum install php5-cgi
于 2013-10-19T21:22:09.313 に答える
0

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

于 2014-06-20T16:34:23.997 に答える
0

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

于 2013-12-30T11:04:43.050 に答える
-2

同じ問題が発生しました(Plesk 12がインストールされている場合)。ただし、PHPをFastCGIとして実行するからApacheモジュールに切り替えると、Webサイトは機能しました。

私の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

ルートとして。

お役に立てば幸いです。

于 2015-03-23T11:13:07.517 に答える