Apache2.4.7 unter Ubuntu 14.04 führt keine Python-CGI-Datei aus. Die Site zeigt stattdessen Python-Code an

7

Problembeschreibung:

Wenn ich 127.0.0.1/cgi-bin/test.cgiin meinen Browser lade, wird meine test.cgiwie eine Textdatei anstelle einer Python-Datei behandelt.

Ausschluss der Möglichkeit, dass der Fehler mit dem Python-Code zusammenhängt:

  • Ich kann keinen absichtlichen 500-Fehler erhalten, egal was ich mit dem Python-Code mache.

  • Und ich habe die CGI-Datei über ausführbar gemacht sudo chmod +x.

  • Ich habe dies bereits in früheren Versionen von Ubuntu ohne Probleme getan.

Theorie:

Ich glaube, das Problem liegt in meiner Konfiguration. Unten ist meine Konfiguration von zwei Dateien apache2.confund 000-default.

Ich habe verschiedene Dinge eingefügt, damit meine Konfigurationsdateien bei jeder Gelegenheit funktionieren. Dies ist nur eine Momentaufnahme davon, wie diese beiden Dateien zum Zeitpunkt des Schreibens aussehen.

Vielen Dank im Voraus!

/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>
Isaac
quelle
2
Haben Sie das CGI-Modul aktiviert? sudo a2enmod cgi?
Muru
Erledigt. Endlich bekomme ich einen Fehler. "Die ScriptAlias-Direktive in /etc/apache2/sites-enabled/000-default.conf in Zeile 9 wird wahrscheinlich nie übereinstimmen, da sie einen früheren ScriptAlias ​​überlappt." Ich verstehe es nicht, da es keinen früheren Alias ​​gibt.
Isaac
1
Da Sie Apache 2.4 verwenden, prüfen Sie, ob Sie diese Datei haben : /etc/apache2/conf-enabled/serve-cgi-bin.conf.
Muru
Ja, ich habe diese Datei!
Isaac
Ja, das hat es getan !! Das war die Datei, zu der ich den Text hinzufügen musste! Es funktioniert jetzt! Hast du etwas dagegen, diese Frage zu beantworten? Ich werde dies als gelöst markieren!
Isaac

Antworten:

9

Das erste Problem wäre, dass das CGI-Modul nicht aktiviert wurde, sodass Apache nichts als CGI verarbeitet. Aktivieren Sie es:

sudo a2enmod cgi

In Apache2.4 wurde die Konfiguration erheblich bereinigt, und Elemente in der defaultSite-Definition wurden in Konfigurationsdateien in verschoben conf-available. Dazu gehören unter anderem auch die CGI-bezogenen Konfigurationszeilen, die auf der defaultWebsite älterer Versionen zu sehen sind. Diese wurden verschoben /etc/apache2/conf-available/serve-cgi-bin.conf, was Folgendes enthält:

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

Dies verursacht das zweite Problem. Ändern Sie diese Datei oder deaktivieren Sie diese Konfiguration:

sudo a2disconf serve-cgi-bin
muru
quelle
3
Vielen Dank! Ich habe meinen Code in /etc/apache2/conf-enabled/serve-cgi-bin.conf
Isaac