Ubuntu 14.04 上的 Apache2.4.7 无法执行 Python cgi 文件。网站反而显示 Python 代码

Ubuntu 14.04 上的 Apache2.4.7 无法执行 Python cgi 文件。网站反而显示 Python 代码

问题描述:

127.0.0.1/cgi-bin/test.cgi当我在浏览器中加载时,它test.cgi被视为文本文件而不是 python 文件。

排除错误与python代码有关的可能性:

  • 无论我对 python 代码做什么,我都无法收到故意的 500 错误。

  • 并且我已通过 使 cgi 文件可执行sudo chmod +x

  • 我之前在以前的 Ubuntu 版本中做过这个,没有任何问题。

理论:

我认为问题出在我的配置上。下面是我对两个文件的配置,apache2.conf000-default

每当有机会时,我都会粘贴不同的东西来使我的配置文件正常工作。这只是撰写本文时这两个文件的快照。

先感谢您!

/etc/apache2/apache2.conf

Mutex file:${APACHE_LOCK_DIR} default
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf

<Directory /home/isaac/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

AccessFileName .htaccess

<FilesMatch "^\.ht">
    Require all denied
</FilesMatch>

LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent


IncludeOptional conf-enabled/*.conf


IncludeOptional sites-enabled/*.conf

/etc/apache2/sites-available/000-default

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /home/isaac/www
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

ScriptAlias /cgi-bin/ /home/isaac/www/cgi-bin/
    <Directory "/home/isaac/www/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
        AddHandler cgi-script .py
        AddHandler default-handler .html .htm
    </Directory>

答案1

第一个问题可能是因为 CGI 模块尚未启用,所以 Apache 不会将任何内容作为 CGI 处理。启用它:

sudo a2enmod cgi

在 Apache2.4 中,配置被大大清理,default站点定义中的内容已移至 中的配置文件conf-available。除其他内容外,这还包括在旧版本站点中看到的与 CGI 相关的配置行default。这些已移至/etc/apache2/conf-available/serve-cgi-bin.conf,其中包含:

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

这会导致第二个问题。请修改该文件,或禁用该配置:

sudo a2disconf serve-cgi-bin

相关内容