安装了 Apache,默认 Web 根目录是 /var/www。我想将 cgi-bin 更改为 /var/www 中的某个位置,但我做不到。它只能在 /usr/lib/cgi-bin 下工作。
我甚至尝试过将一个包含 cgi-bin 的 webroot 目录放在我的主目录中,并在 conf 中做出相应的更改。但唯一有效的方法是当 cgi-bin 设置指向 /usr/lib/cgi-bin 时。
虚拟主机:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
#DocumentRoot /var/www
DocumentRoot /home/aj/public_html
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
#<Directory /var/www/>
<Directory /home/aj/public_html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonDebug On
</Directory>
ScriptAlias /cgi-bin/ /home/aj/public_html/cgi-bin/
#ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
#<Directory /usr/lib/cgi-bin/>
<Directory /home/aj/public_html/cgi-bin/>
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel debug
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
Apache 日志有此错误:
script not found or unable to stat: /home/aj/public_html/cgi-bin
更多信息:
执行“ ps -AF | grep ap”命令后,我得到了结果,我认为 Apache 进程正在以 root 或 www-data 身份运行。以下是转储:
root 22762 1 0 8543 8952 0 00:30 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 22764 22762 0 8669 5928 0 00:30 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 22765 22762 0 8543 5152 0 00:30 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 22766 22762 0 8669 5928 0 00:30 ? 00:00:00 /usr/sbin/apache2 -k start
请帮忙。谢谢。
答案1
如果 Apache 运行的用户帐户(访客?无人?)无权访问,/home/aj/public/cgi-bin
那么您将会看到该错误。
请检查用户和团体设置httpd.conf
,并检查此命令的输出:
ls -ld /home/aj /home/aj/public_html /home/aj/public_html/cgi-bin
Apache 用户能看到 cgi-bin 目录吗?
使用 eg 有什么问题吗/var/www/cgi-bin
?
启动时是否出现了一些错误消息,或者在向脚本发送请求时是否在浏览器中看到错误?
您可能遇到与主目录相同的问题/var/www
;即 Apache 进程无法访问该文件夹。
笔记在我们知道有效的用户帐户和权限之前,这一切都只是猜测。
答案2
如果您对 strace 很熟练,我建议您通过 strace 运行非分叉的 httpd 实例,看看为什么会出现错误。 Strace 会告诉您是否存在权限问题或路径错误。
答案3
知道了!
PythonHandler mod_python.publisher
需要是
PythonHandler mod_python.cgihandler
然后您可以将 Python 作为 CGI 运行。