无法更改 Apache 中的 cgi-bin 路径

无法更改 Apache 中的 cgi-bin 路径

安装了 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 运行。

相关内容