私のサイトはすべて以前は正常に機能していました…1週間以上後に気付いたため、いつ発生したかはわかりませんが(おそらくシステムのアップグレード後だと思います)、すべてのVirtualHostが恐ろしい「スクリプトの早期終了」でオフラインになりました。ヘッダー:php-fcgid-wrapper」500エラー。
SuExecログは私に各サイトについてこれを与えました:
[2012-07-16 00:45:02]: uid: (1001/site) gid: (1001/site) cmd: php-fcgid-wrapper
[2012-07-16 00:45:02]: command not in docroot (/var/www/site/fcgi-bin/php-fcgid-wrapper)
これは真実ではありません(または少なくともそうであるべきではありません)…I Apacheを自動的にコンパイルします--with-suexec-docroot=/srv/www
を設定します。それでも、私はサニティチェックを試し、docrootSuExecが実際に何を持っていると思ったかを確認しました。
$ suexec -V
suexec policy violation: see suexec log for more details
ログが主張したもの:
[2012-07-16 01:07:52]: too few arguments
Sudoでも試してみました。同じこと。したがって、これでも意味がなく、問題を適切に診断することができません。
私が試したもう1つのことは、すべてを/srv/www
からデフォルトのdocrootである/var/www
に移動して、アップグレード中に生のリポジトリバージョンに戻ったかどうかを確認することでした。 VirtealHostsを更新し、Apacheを再起動しましたが、同じ500エラーが発生しました。
他に何がこれを引き起こしている可能性がありますか?
Suexec.cを再コンパイルする必要があります--with-suexec-docroot =/srv/www
再コンパイルする必要はありません。このパッケージを使用して、debianまたはubuntuにカスタムパスを設定できます。
apt-get install Apache2-suexec-custom
パッケージをインストールした後、すべてのユーザーのsuexecパスを設定できる特別なディレクトリがあります。 www-dataユーザーのサンプルファイルがあるはずです。
/etc/Apache/suexec/<some-user-name>
DebianまたはUbuntuをお持ちでない場合は、そのようなパッケージを探すか、適切なdocrootを使用してsuexecを再コンパイルする必要があります( suexec doc を参照)。パラメータは次のとおりです。
--with-suexec-docroot=DIR
ディストリビューションでそれを行う方法を確認する必要があります。
次のコマンドでfcgid構成を検索します。
/usr/lib/Apache2/suexec -V
-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="www-data"
-D AP_LOG_EXEC="/var/log/Apache2/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=100
-D AP_USERDIR_SUFFIX="public_html"
アクセスして実行するには、ラッパーをAP_DOC_ROOTのディレクトリツリーに書き込む必要があります。
2行のwww-dataファイル(/ etc/Apache2/suexec/www-data)があります。
/var/www
/public/cgi-bin/
その行を好きなように変更できます