Shebangzeile wird ignoriert

Probleme bei der Installation?
Antworten
Regnator
User
Beiträge: 3
Registriert: Freitag 27. November 2015, 10:19
Kontaktdaten:

Hallo erstmal,

mein Problem ist aktuell, dass auf meinem angemieteten V-Server die Shebangzeile in dem Ordner cgi-bin ignoriert wird.

Auf meinem System läuft Ubuntu 14.04 mit Python 2.7, Python 3.5, Plesk 12.5, Apache2.4, Nginx, Mysql.

Code: Alles auswählen

python --version: Python 2.7.6
python3 --version: Python 3.4.3
Mein 'python' Befehl ist auf 2.7 symlinked weil Plesk das so braucht.

In meinem Webspace habe ich als erste Zeile meines Scripts

Code: Alles auswählen

#!/usr/local/bin/python3
stehen.
Drunter steht

Code: Alles auswählen

print("Content-type: text/html")
print("")
import sys
print(sys.path)
print("")
print(sys.version)
https://united-gaming.de/cgi-bin/test2.py

Was mir

Code: Alles auswählen

['/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages'] 2.7.6 (default, Jun 22 2015, 18:01:27) [GCC 4.8.2]
zurückliefert.

Wie kann ich wo an welcher Stelle ändern, dass für meine Scripts 3.4 benutzt wird ? Ich benötige 3.4 weil ich ein bestimmtes Modul brauche.
Zusätzliche Info auf meiner Seite
https://united-gaming.de/cgi-bin/test.py

Code: Alles auswählen

#!/usr/bin/python
print "Content-type: text/html"
print
print "<pre>"
import os, sys
from cgi import escape
print "<strong>Python %s</strong>" % sys.version
keys = os.environ.keys()
keys.sort()
for k in keys:
    print "%s\t%s" % (escape(k), escape(os.environ[k]))
print "</pre>"

print sys.path
Zuletzt geändert von Anonymous am Freitag 27. November 2015, 10:56, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

@Regnator: Bei der Ausgabe der Umgebungsvariablen steht bei $GATEWAY_INTERFACE als Wert 'Python-CGI/1.1' — das ist ungewöhnlich und sieht IMHO so aus als wenn Python-Dateien nicht normal als CGI ausgeführt werden sondern für die etwas anderes beim Webserver registriert ist was dann vielleicht Python 2 ”vorschreibt”. Bei meinem lokalen Apache kommt jedenfalls der Wert 'CGI/1.1' ohne Python davor.

Was passiert denn wenn Du die Dateiendung von *.py auf *.cgi änderst? Wird dann die Shebang-Zeile berücksichtigt?
Regnator
User
Beiträge: 3
Registriert: Freitag 27. November 2015, 10:19
Kontaktdaten:

Dann kommt eine 500er Error Meldung.
Hab auch probiert ob es daran liegt das "print" noch ohne Klammern im Code steht, das hat aber auch nix gebracht.
https://united-gaming.de/cgi-bin/test.cgi

Code: Alles auswählen

#!/usr/bin/python3
print("Content-type: text/html")
print()
print ("<pre>")
import os, sys
from cgi import escape
print("<strong>Python %s</strong>" % sys.version)
keys = os.environ.keys()
keys.sort()
for k in keys:
    print("%s\t%s" % (escape(k), escape(os.environ[k])))
print("</pre>")

print(sys.path)
Wie gesagt, ich habe eine Plesk 12.5 Installation und diese konfiguriert vor dem Apache2 noch einen Nginx Server als Proxy.

Meine Einstellungen : http://united-gaming.de/bilder/apache2%20settings.png
http://united-gaming.de/bilder/nginx%20settings.png
http://united-gaming.de/bilder/python%20support.png
Regnator
User
Beiträge: 3
Registriert: Freitag 27. November 2015, 10:19
Kontaktdaten:

Hat sich erledigt!
Es lag daran, dass in Plesk der "Python Support" deaktiviert werden musste.

Desweiteren musste ich meine Shebang Zeile in

Code: Alles auswählen

#!/usr/bin/python3.4
ändern und noch

Code: Alles auswählen

print("Content-type: text/html")
print("")
Das einfügen. Mein Code funktioniert nun und wird korrekt dargestellt.
Antworten