2013-09-25 15 views
5
wiadomość

Błąd jest:apache suexec

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

Here Znalazłem to:

suexec wymaga skryptu CGI być pod DocumentRoot serwera (a nie VirtualHost DocumentRoot) . Dozwolone jest jednak, aby VirtualHost DocumentRoot był dowiązaniem symbolicznym do katalogu, który pojawia się pod prawdziwym DocumentRoot.

częścią wirtualnego hosta jest config:

[...] 
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> 
[...] 

Tak, wolę mieć skryptów Perl wewnątrz cgi-bin, ale jeśli nie mogę rozwiązać tego problemu mogę przenieść wszystkie skrypty do htdocs.

Odpowiedz

13

suEXEC posiada własną docroot który jest całkowicie niezależny od cokolwiek skonfigurować w config Apache. Można zobaczyć, co docroot suEXEC „s jest pod numerem:

suexec -V 

Być może trzeba będzie za to pierwiastek. W moim przypadku dokumentacja była /var/www. Będziesz musiał umieścić tam swoje skrypty. Nie ma możliwości zmiany tego zapisu, rekompilacja suEXEC. Nie próbuj używać dowiązań symbolicznych, aby zachować swoje skrypty poza /var/www (lub czymkolwiek, do czego twoja konfiguracja suEXEC jest skonfigurowana).

Edycja: jak wspomniano przez @insaner w komentarzach polecenie jest prawdopodobnie suexec lub jak widziałem na co najmniej jeden serwer suexec2. suEXEC jest właśnie tym, co dokumentacja Apache wywołuje moduł/funkcja.

+3

Pakiet 'apache2-suexec-custom' pozwala na większą elastyczność. –

+0

Doskonała. Dokładnie to, czego szukałem. –

+0

Polecenie jest bardziej prawdopodobne, że jest to 'suexec -V', zauważ ograniczenia. – insaner

-4

Zmień DocumentRoot /home/site1/htdocs do DocumentRoot /home/site1/