web-dev-qa-db-ja.com

SuExec:「コマンドはdocrootにありません」とはいえ?

  • Arch Linux 2011.08.19(Linux 3.4.2 i686)
  • SuExecを使用したApache2.2.22
  • FastCGI経由のPHP5.4.4(cli)

私のサイトはすべて以前は正常に機能していました…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エラーが発生しました。

他に何がこれを引き起こしている可能性がありますか?

2
Hugh Guiney

Suexec.cを再コンパイルする必要があります--with-suexec-docroot =/srv/www

0
Andrew Smith

再コンパイルする必要はありません。このパッケージを使用して、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

ディストリビューションでそれを行う方法を確認する必要があります。

2
Fa11enAngel

次のコマンドで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のディレクトリツリーに書き込む必要があります。

1
ppostma1

2行のwww-dataファイル(/ etc/Apache2/suexec/www-data)があります。

/var/www
/public/cgi-bin/

その行を好きなように変更できます

0
Pol Hallen