linux – 用户目录中的Apache CGI“标题之前的脚本输出结束”
我知道有关于这个主题的一些问题,但似乎都没有解决我的问题.见
this或
this或
this.
我在Linux,Fedora21上,我正在尝试启用每个用户目录的CGI脚本.我遵循了these指令,但没有成功. 我收到错误: [cgi:error] End of script output before headers: test.cgi test.cgi是一个可执行的sh文件,包含一个非常简单的脚本: #!/usr/bin/sh echo "Content-type: text/plain" echo "" echo "Hello" 它有可执行标志,并且没有shell的问题. 我也禁用了selinux. 我也尝试将调试级别设置为Apache的ErrorLog,但我得到的只是在上面的错误之前被“授予”权限. 我还配置了/etc/httpd/conf.d/userdir.conf文件 <Directory "/home/*/public_html"> AllowOverride All Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Require all granted </Directory> <Directory /home/*/public_html/cgi-bin/> Options ExecCGI FollowSymLinks SetHandler cgi-script AddHandler cgi-script .cgi .exe .pl .py .vbs Require all granted AllowOverride All </Directory> 并重新启动服务器.没有成功.一切看起来都很好,我无法理解……有什么不对? 编辑: 我忘了添加该问题只针对每用户目录:如果我将相同的脚本移动到/ var / www / cgi-bin目录,它按预期工作. 编辑2: shell确实存在: $ls /usr/bin/sh /usr/bin/sh 解决方法
最后我解决了这个问题感谢@JimB,因为在
his comment他指出了我不知道的SUEXEC(或者直到现在才被忽略).
在读完suEXEC documentation之后,我明白问题必须在那里.所以,我看了一下配置: # suexec -V -D AP_DOC_ROOT="/var/www" -D AP_GID_MIN=1000 -D AP_HTTPD_USER="apache" -D AP_LOG_SYSLOG -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin" -D AP_UID_MIN=1000 -D AP_USERDIR_SUFFIX="public_html" 一切看起来都很好(我的用户好uid / gid,userdir_suffix很好,等等).所以我看了一下系统日志: # journalctl -b | grep "suexec" May 22 11:43:12 caladan suexec[5397]: uid: (1000/user) gid: (1000/user) cmd: test.cgi May 22 11:43:12 caladan suexec[5397]: directory is writable by others: (/home/user/public_html/cgi-bin) 这就是问题:我的cgi-bin目录是其他人可写的. 我通过简单地将权限更改为755来修复. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |