2010-03-29 5 views
3

J'ai édité cette question après que j'ai trouvé une solution ... j'ai besoin de comprendre pourquoi la solution a fonctionné au lieu de ma méthode?python sur apache - obtenir 404

Il s'agit probablement d'une question stupide. J'ai essayé de chercher d'autres questions qui sont liées ... mais en vain.

je cours Apache/2.2.11 (Ubuntu) DAV/2 SVN/1.5.4 PHP/5.2.6-3ubuntu4.5 avec mod_python Suhosin-Patch/3.3.1 python/2.6.2

i ont un script appelé test.py

#! /usr/bin/python 
print "Content-Type: text/html"  # HTML is following 
print        # blank line, end of headers 

print "hello world" 

en cours d'exécution comme un exécutable fonctionne ...

/var/www$ ./test.py 
Content-Type: text/html 

hello world 

quand je lance http://localhost/test.py je reçois une erreur 404.

Que manque-t-il? J'ai utilisé cette ressource pour activer l'analyse Python sur Apache. http://ubuntuforums.org/showthread.php?t=91101

De ce même fil ... le code suivant a fonctionné .. pourquoi? #!/Usr/bin/python

import sys 
import time 

def index(req): 

# Following line causes error to be sent to browser 
# rather than to log file (great for debug!) 

    sys.stderr = sys.stdout 

    #print "Content-type: text/html\n" 

    #print """ 
    blah1 = """<html> 
    <head><title>A page from Python</title></head> 
    <body> 
    <h4>This page is generated by a Python script!</h4> 
    The current date and time is """ 

    now = time.gmtime() 
    displaytime = time.strftime("%A %d %B %Y, %X",now) 

    #print displaytime, 
    blah1 += displaytime 

    #print """ 
    blah1 += """ 
    <hr> 
    Well House Consultants demonstration 
    </body> 
    </html> 
    """ 
    return blah1 

Répondre

4

Je pense que Publisher Handler de la mod_python attend de trouver la fonction index dans test.py.

Vous pouvez appeler n'importe quelle fonction dans test.py en la plaçant à la fin de l'URL, par ex. http://localhost/test.py/any_func, la fonction par défaut étant index si aucune donnée n'est donnée.

+0

qui ressemble à la réponse! Je vous remercie. Je vais accepter dès que stackoverflow me le permet. – Kirby

0

Si vous voulez avoir votre code de travail tel qu'il est, vous pouvez également configurer votre serveur Web pour gérer .pl en tant que script cgi au lieu d'utiliser mod_python.publisher

sur config apache:

AddHandler cgi-script .py 

et si vous ne voulez pas une erreur 403, éditez:

<Directory /path/to/www/yourfile.py> 
Options +ExecCGI 
</Directory> 
Questions connexes