错误信息是:
command not in docroot (/home/site1/cgi-bin/test.pl).
Here我发现了这一点:
虚拟主机配置的一部分是:
[...]
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。
最佳答案
suEXEC
有自己的docroot
,它完全独立于您在Apache配置中配置的内容。您可以通过调用以下命令来查看suEXEC
的docroot:
suexec -V
您可能需要为此 Root 。在我的情况下,docroot是
/var/www
。您必须将脚本放在那里。无法更改此保存重新编译的suEXEC
。不要尝试使用符号链接(symbolic link)将脚本保持在/var/www
(或您的suEXEC
所配置的任何内容)之外。编辑:正如@insaner在评论中提到的,该命令可能是
suexec
,或者正如我在至少一台服务器suexec2
上看到的那样。 suEXEC
就是Apache文档所说的模块/功能。