关于 SUEXEC 和 DOCROOT 的混淆

关于 SUEXEC 和 DOCROOT 的混淆

我在使用 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根目录中的实际文件。

相关内容