我在使用 suexec 时不断遇到一个问题,它说 cgi 脚本不在文档根目录中。
我收到此错误:
"[2012-05-21 04:53:02]: command not in docroot (/apps/dctools/www/cgi-bin/test.cgi)"
我有一个指向 cgi 文件所在位置的符号链接。符号链接对 suexec 来说是个问题吗?
使用虚拟主机配置。
apache docroot: /var/www/html
suexec docroot: /var/www
虚拟主机配置
<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
答案1
文件的实际位置(而不是符号链接)决定了是否suexec
运行它。该设置被编译到suexec
,要更改它需要重新编译。默认情况下,它将位于/var/www
您已经提到的配置中。这意味着您需要重新编译suexec
以允许/app
成为接受的根目录,suexec
或者您需要移动/复制配置的suexec
根目录中的实际文件。