list at joreybump.com
Sun Mar 26 12:33:58 EST 2006
Graham Dumpleton wrote: > > On 26/03/2006, at 8:45 AM, Alberto Ruiz wrote: > >> So you are saying that I have to modify my calls to my python scrypts to >> be propman.py/index , instead of just propman.py, right? Yes. > It should be sufficient to use "propman.py" even if you were to use > mod_python.publisher as it will fallback to calling "index()". This is not true with mod_python 2.7.10. As the OP states, it returns a 404 error when calling the script directly. Calling the script with a trailing slash returns this error: Mod_python error: "PythonHandler mod_python.publisher" Traceback (most recent call last): File "/usr/lib/python2.1/site-packages/mod_python/apache.py", line 193, in Dispatch result = object(req) File "/usr/lib/python2.1/site-packages/mod_python/publisher.py", line 90, in handler if func_path[-1] == ".": IndexError: string index out of range See this for more information: http://www.modpython.org/live/mod_python-2.7.8/doc-html/hand-pub-alg-trav.html I believe someone has posted a patch to add more modern index traversal to 2.7.x versions of mod_python. You'll need to search the archives. My recommendation to Publisher beginners is to avoid using modules named index.py and index() functions until they thoroughly understand how mod_python works. Index traversal is a special case in 3.x, and it's nearly impossible to understand coming from a different background. The documentation can also be misleading (note that this is for mod_python 3.x, not 2.x!): http://www.modpython.org/live/current/doc-html/hand-pub-alg-trav.html >> The version of modpython in my old system was 2.7.10, so I assumed that >> they weren't that many changes. They are very different in some key ways, enough to cause you grief. Be sure to consult the right documentation. >> So is there a way to change the call to my scripts so I don't to >> append /index ? > > If you have control over this box, I would highly recommend you upgrade > to Apache 2.2 and mod_python 3.2.8. If this isn't possible, you can plan ahead and reorganize things a bit. Designate a directory that will only serve modules via Publisher. Then always set an explicit function to be the target. So if you set up an app/ directory, and use SetHandler instead of AddHandler, your URL might look like this: http://host/app/propman/foo Where foo() is the function that returns your content. You don't have to have an index() function in your module. Yes, people will get strange errors if they try to go places they shouldn't, but that'll learn 'em. :) I use this approach on some Debian Woody systems I still have in production, and it works fine. When you move to an Apache 2.x/mod_python 3.x system, you can start to take advantage of the convenient, but totally unnecessary, index traversal capabilities.