2013-09-25 9 views
5

오류 메시지는 다음과 같습니다 아파치 suexec를 "명령하지 docroot를에서"

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-빈 내부 Perl 스크립트를 선호하지만, 나는이 문제를 해결할 수없는 경우 나 htdocs에 모든 스크립트를 이동할 수 있습니다.

답변

13

suEXEC 당신이 당신의 아파치 설정에서 구성간에 완전히 독립적 인 자체 docroot을 가지고 DocumentRoot를합니다. 당신은 호출하여 무엇 suEXEC의 docroot를 볼 수 있습니다

suexec -V 

당신은 그것을 위해 뿌리를해야 할 수도 있습니다. 필자의 경우 docroot는 /var/www입니다. 스크립트를 입력해야합니다. 이 변경 내용을 다시 컴파일하는 방법이 없습니다 suEXEC. 스크립트를 /var/www (또는 귀하의 suEXEC이 무엇이든지) 외부에두기 위해 심볼릭 링크를 사용하지 마십시오.

편집 : 주석에서 @insaner에 의해 언급 된 것처럼 명령은 아마도 suexec이거나 적어도 하나의 서버에서 보았을 때 suexec2입니다. suEXEC은 Apache 설명서에서 모듈/기능을 호출하는 것입니다.

+3

패키지'apache2-suexec-custom'은 더 많은 유연성을 허용합니다. –

+0

Excelent. 정확히 내가 무엇을 찾고 있었는지. –

+0

이 명령은'suexec -V' 일 가능성이 높습니다. – insaner

-4

변경을 DocumentRoot /home/site1/htdocs/home/site1/