在SUEXEC和DOCROOT混淆

我一直在遇到suexec的问题,它说cgi脚本不在docroot中。

我得到这个错误:

"[2012-05-21 04:53:02]: command not in docroot (/apps/dctools/www/cgi-bin/test.cgi)" 

我有一个符号链接到cgi文件的位置。 符号链接是suexec的问题吗?

使用虚拟主机configuration。

 apache docroot: /var/www/html suexec docroot: /var/www 

虚拟主机configuration

 <VirtualHost 10.1.1.1:80> ServerAdmin [email protected] DocumentRoot /var/www/html/dctools ServerName dctools.nowhere.com ErrorLog logs/dctools.nowhere.com-error_log CustomLog logs/dctools.nowhere.com-access_log common SuexecUserGroup me white ScriptAlias /cgi-bin/ "/var/www/cgi-bin/dctools/" <Directory "/var/www/dctools/cgi-bin"> AllowOverride None Options None Options FollowSymlinks Order allow,deny Allow from all </Directory> </VirtualHost> 

符号链接设置

 -sh-3.2$ pwd /var/www/html -sh-3.2$ ls -l lrwxrwxrwx 1 root root 17 May 14 21:06 dctools -> /apps/dctools/www -sh-3.2$ pwd /var/www/cgi-bin -sh-3.2$ ls -l lrwxrwxrwx 1 root root 21 May 14 21:47 dctools -> /apps/dctools/cgi-bin 

文件的实际位置,而不是符号链接,决定了suexec是否会运行它。 这个设置被编译成suexec并且改变它需要重新编译它。 默认情况下,你将在/var/www中提到你的configuration。 这意味着你需要重新编译suexec来允许/app成为suexec的可接受根,否则你需要移动/复制configurationsuexec根目录下的实际文件。