Hallo,
also langsam verlier ich den Überblick. Warum in alles in der Welt kann ich:
1. Den Interpreterpfad im Skript ändern auf irgendwas, die Testskripte werden ausgeführt:
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# Debugging für CGI-Skripte 'einschalten'
import cgitb; cgitb.enable()
print "Content-Type: text/html;charset=utf-8\n"
print "Hello World!"
Ergebis -> Hello World
und das mit der Endung .py
Ja mein Gott wird hier jetzt Python ausgeführt oder nicht ?
Sag ich aber folgendes:
Code: Alles auswählen
from mod_python import apache
def handler(req):
req.write("Hello World!")
return apache.OK
kommt der download -> Warum ?
folgendes:
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: UTF-8 -*-
print "Content-Type: text/html;charset=utf-8\n"
import cgitb; cgitb.enable() # Debugging für CGI-Skripte 'einschalten'
import os
print "einfacher mod_python Test"
if __name__ != "__main__":
# Kann passieren, wenn das Skript nicht als CGI läuft, sondern
# evtl. über mod_python
print "<h1>Fehler:</h1>"
print "<p>__name__ == %s (sollte aber == '__main__' sein!)</p>" % __name__
print "<hr />"
try:
gateway = os.environ["GATEWAY_INTERFACE"]
except KeyError:
print "Fehler: GATEWAY_INTERFACE ist nicht in os.environ!"
print "Wahrscheinlich ist der Server nicht richtig konfiguriert."
else:
print "<p>GATEWAY_INTERFACE: <strong>%s</strong></p>" % gateway
if gateway=="CGI/1.1":
print "<p>OK, running as CGI.</p>"
else:
print "<h3>Not running as CGI!</h3>"
# Mal sehen ob das mod_python Modul verfügbar ist. Wenn ja, ist mod_python
# generell installiert, aber evtl. nicht aktiv.
try:
import mod_python
except ImportError, e:
print "<p>Note: Can't import mod_python module: %s</p>" % e
ergibt jenes: (mit der endung .py)
Code: Alles auswählen
einfacher mod_python Test
Fehler:
__name__ == test (sollte aber == '__main__' sein!)
GATEWAY_INTERFACE: Python-CGI/1.1
Not running as CGI!
und zum Schluss was ich gar nicht verstehe ist das jetzt python oder mod_python oder ich weiss es nicht:
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import cgitb; cgitb.enable() # Debugging für CGI-Skripte 'einschalten'
print "Content-Type: text/html; charset=utf-8\n"
print "<h1>Hello World!</h1>"
print "<hr/>"
import sys, os
print "<h3>Python v%s</h3>" % sys.version
print "<h3>os.uname():</h3>%s<br />" % " - ".join(os.uname())
print "<h3>sys.path:</h3>"
sys_path = sys.path[:]
sys_path.sort()
for p in sys_path:
print "%s<br />" % p
print "<h3>OS-Enviroment:</h3>"
print '<dl id="environment">'
keys = os.environ.keys()
keys.sort()
for key in keys:
value = os.environ[key]
print "<dt>%s</dt>" % key
print "<dd>%s</dd>" % value
print "</dl>"
ergibt mit der endung .py das:
Code: Alles auswählen
Hello World!
Python v2.3.5 (#1, Oct 16 2006, 19:18:40) [GCC 3.3.5 (Debian 1:3.3.5-13)]
os.uname():
Linux - srvx.xx.de - 2.6.8-3-k7 - #1 Thu Sep 7 05:09:40 UTC 2006 - i686
sys.path:
/usr/lib/python2.3
/usr/lib/python2.3/lib-dynload
/usr/lib/python2.3/lib-tk
/usr/lib/python2.3/plat-linux2
/usr/lib/python2.3/site-packages
/usr/lib/python23.zip
/usr/local/lib/python2.3/site-packages
\.py$/
OS-Enviroment:
DOCUMENT_ROOT
/var/www/web2/html
GATEWAY_INTERFACE
Python-CGI/1.1
HTTP_ACCEPT
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
HTTP_ACCEPT_CHARSET
ISO-8859-1,utf-8;q=0.7,*;q=0.7
HTTP_ACCEPT_ENCODING
gzip,deflate
HTTP_ACCEPT_LANGUAGE
de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
HTTP_CACHE_CONTROL
max-age=0
HTTP_CONNECTION
keep-alive
HTTP_HOST
webx.srvx.xxx.de
HTTP_KEEP_ALIVE
300
HTTP_USER_AGENT
Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8
PATH
/usr/local/bin:/usr/bin:/bin
QUERY_STRING
REMOTE_ADDR
84.188.254.11
REMOTE_PORT
3095
REQUEST_METHOD
GET
REQUEST_URI
/cgi-bin/test.py
SCRIPT_FILENAME
/var/www/web2/html/cgi-bin/test.py
SCRIPT_NAME
/cgi-bin/test.py
SERVER_ADDR
85.10.197.143
SERVER_ADMIN
[no address given]
SERVER_NAME
web2.srvx.xx.de
SERVER_PORT
80
SERVER_PROTOCOL
HTTP/1.1
SERVER_SIGNATURE
SERVER_SOFTWARE
Apache/2.0.54 (Debian GNU/Linux) mod_ssl/2.0.54 OpenSSL/0.9.7e mod_fastcgi/2.4.2 mod_python/3.1.3 Python/2.3.5 mod_perl/1.999.21 Perl/v5.8.4
versteh ich nicht. Wir hier Python ausgeführt - wohl kaum oder ?
Wie gesagt richtiger Python Code , siehe oben - kommt mit download - oder ist das falscher python Code? Und wie gesagt der Interpreterpfad ist nutzlos, da kann ich auch einstellen was ich will , immer das Gleiche Ergebis.
gruß cirox