![Ubuntu 14.04 上的 Apache2.4.7 无法执行 Python cgi 文件。网站反而显示 Python 代码](https://linux22.com/image/976654/Ubuntu%2014.04%20%E4%B8%8A%E7%9A%84%20Apache2.4.7%20%E6%97%A0%E6%B3%95%E6%89%A7%E8%A1%8C%20Python%20cgi%20%E6%96%87%E4%BB%B6%E3%80%82%E7%BD%91%E7%AB%99%E5%8F%8D%E8%80%8C%E6%98%BE%E7%A4%BA%20Python%20%E4%BB%A3%E7%A0%81.png)
问题描述:
127.0.0.1/cgi-bin/test.cgi
当我在浏览器中加载时,它test.cgi
被视为文本文件而不是 python 文件。
排除错误与python代码有关的可能性:
无论我对 python 代码做什么,我都无法收到故意的 500 错误。
并且我已通过 使 cgi 文件可执行
sudo chmod +x
。我之前在以前的 Ubuntu 版本中做过这个,没有任何问题。
理论:
我认为问题出在我的配置上。下面是我对两个文件的配置,apache2.conf
和000-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