2013-09-25 10 views
5

エラーメッセージは次のとおりです。apacheのsuexecの "ドキュメントルート内のコマンドではない"

command not in docroot (/home/site1/cgi-bin/test.pl). 

Here私はこれを見つけた:

suexecのは、サーバのDocumentRootの(ないのVirtualHostのDocumentRoot)下にCGIスクリプトが必要です。ただし、VirtualHost DocumentRootが実際のDocumentRootの下に表示されるディレクトリへのシンボリックリンクであることは許可されています。

仮想ホストの設定の一部は次のとおりです。だから、

[...] 
DirectoryIndex index.html index.html index.php 
DocumentRoot /home/site1/htdocs 

SuexecUserGroup site1 site1 

ScriptAlias /cgi-bin/ /home/site1/cgi-bin/ 
<Location /home/site1/cgi-bin> 
      Options +ExecCGI 
</Location> 

<Directory /home/site1/> 
Options -Includes -Indexes -FollowSymLinks +ExecCGI MultiViews 
AddHandler cgi-script .cgi .pl 
AllowOverride none 
Order allow,deny 
Allow from all 
</Directory> 
[...] 

、私はCGI-binの内部のPerlスクリプトを持っていることを好むが、私はこの問題を解決できない場合、私はhtdocsにするすべてのスクリプトを移動することができます。

答えて

13

suEXECに、あなたのApacheの設定で設定したものは何でもの完全に独立しているdocroot、独自のを持っています。あなたは呼び出すことである何suEXECのドキュメントルートを確認できます。

suexec -V 

あなたはそのためのルートをする必要があります。私の場合、docrootは/var/wwwでした。そこにスクリプトを置く必要があります。これを変更する方法はありません。suEXECを再コンパイルしてください。スクリプトを/var/www(またはあなたのsuEXECに設定されているもの)の外に保つためにシンボリックリンクを使用しないでください。

編集:@insanerのコメントでは、コマンドはおそらくsuexecであるか、少なくとも1台のサーバーで見たようにsuexec2です。 suEXECは、Apacheのドキュメンテーションがモジュール/機能と呼んでいるものです。

+3

パッケージ 'apache2-suexec-custom'はより柔軟に対応します。 –

+0

Excelent。まさに私が探していたもの。 –

+0

コマンドは 'suexec -V'である可能性が高く、大文字に注意してください。 – insaner

-4

変更DocumentRootの/home/site1/htdocsのDocumentRoot /home/site1/

関連する問題