我有一台 Debian 6 服务器,之前使用带有 mod_php 的 Apache,但由于 Wordpress 不知何故导致 Apache 崩溃,因此决定改用 fcgi。我的站点的 Apache 配置文件中有以下内容:
Options +ExecCGI
AddHandler fcgid-script .php
FCGIWrapper /usr/lib/cgi-bin/php5 .php
SuexecUserGroup "#1001" "#1003"
如果我不包含 ,一切都会正常工作SuexecUserGroup
,但显然它会以 而不是上面的用户和组的身份运行脚本。当我包含该行时,我收到 500 错误,并且我的文件www-data
中显示以下内容:suexec.log
[2013-05-22 16:00:12]: command not in docroot (/usr/lib/cgi-bin/php5)
一切都是使用软件包安装的,所以我甚至不知道文档根目录在哪里是。
这是我的 suexec 信息:
# /usr/lib/apache2/suexec -V
-D SUEXEC_CONFIG_DIR=/etc/apache2/suexec/
-D AP_GID_MIN=100
-D AP_LOG_EXEC="/var/log/apache2/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=100
如果与我的 php5 文件的权限有关,请执行以下操作:
# ls -l /usr/lib/cgi-bin/php5
-rwxr-xr-x 1 root root 7769160 Mar 4 08:25 /usr/lib/cgi-bin/php5
答案1
错误消息中的文档根目录是suexec
文档根目录。出于安全原因,您不能直接使用FCGIWrapper
suexec 目录中未包含的任何命令。默认情况下,这是/var/www/
,但是当使用 时apache2-suexec-custom
,您可以通过修改文件的第一行将其更改为您想要的任何目录/etc/apache2/suexec/www-data
。