[mod_python] How do I troubleshoot a 500 Internal Server Error?

Alberto Ruiz al at ruiz.ws
Fri Mar 31 08:36:57 EST 2006


I had to append the path because I was getting the error that import
DBconnectpropman could not be found.  Somehow the path gets lost.  I
also try adding the following to the httpd.conf:

PythonPath "sys.path+['/home/brianheadrentals/www/brianheadrentals.com>'
]"

But it didn't make a difference.   They are about 10 python scripts for
the whole site and for each one if I don't do the sys.path.append it
fails to find it.  Is there another way to fix it?

In regards to flushing out the headers. You mean that before doing:

R.write("<head><meta http-equiv='refresh'
content='0;url=BB.html'></head>")

I should do:

R.send_http_header()

right?

On Fri, 2006-03-31 at 07:18 -0500, Jim Gallacher wrote:
> Graham Dumpleton wrote:
> > Remember to keep followups on mailing list. :-)
> > 
> > A few comments on code:
> > 
> > On 31/03/2006, at 3:35 PM, Alberto Ruiz wrote:
> > 
> >> I added debug code in my Python script that writes to a file at
> >> different stages of the script.  The script executes successfully
> >> without any errors, and my debug writes show up fine in the debug  file.
> >> In any case here is a snippet of my script:
> >>
> >> global DB
> >> import sys
> >> sys.path.append('/home/john/www/mydomain.com')
> > 
> > 
> > You shouldn't append to sys.path explicitly in modules because every
> > time the module is reloaded, it will be extended, thus growing and
> > growing the path with the same directory.
> > 
> >> import DBconnectpropman
> >> import ZWF
> >> reload(ZWF)
> > 
> > 
> > Huh????
> > 
> >> import time,random,string
> >> global DATEBOX
> >> from mod_python import Cookie
> >>
> >> def index (req,LLRuser='',LLRpw=''):
> >>     debugfile = open("/home/john/www/mydomain.com/debug.txt", "a")
> >>     debugfile.write("Begining of index function\n")
> >>     global R; R=req; R.content_type="text/html"
> > 
> > 
> > You should not store the request object in a global variable. If you  
> > ever move
> > to mod_python 3.X and use a multithreaded MPM it will break as multiple
> > threads may execute within the same module as the same time.
> > 
> >>     cur=DBconnectpropman.DB.cursor()
> >>     sidrefreshing=0
> >>     ZWF.R=R
> >>     global SID;SID=''
> >>     global UID;UID=''
> >>     cookies = Cookie.get_cookies(R, Cookie.MarshalCookie,
> >> secret='LLR14222222')
> >>     if LLRuser!='' and LLRpw!='':  # login attempt
> >>         if string.find(LLRuser,"@")!=-1: #client login attempt
> >>             cur.execute("select clientid,name,password from client where
> >> email='"+LLRuser+"'")
> >>             userrs=cur.fetchone()
> >>             if str(userrs)!='None':
> >>                 LLRuser=userrs[1]
> >>                 usertable='client'
> >>         else:
> >>             debugfile.write("It is an admin user\n")
> >>             cur.execute("select * from user where name='"+LLRuser+"' and
> >> password='"+LLRpw+"'")
> >>             userrs=cur.fetchone()
> >>             usertable='user'
> >>             debugfile.write("admin user section.\n")
> >>         if str(userrs)!='None': #login success create session key, 
> >> update  user
> >> record, sett sid cookie
> >>             debugfile.write("userrs is not None.\n")
> >>             SID=''
> >>             for n in range(0,32):
> >>                 x=random.randint(48,108)
> >>                 if x>57:x+=8
> >>                 if x>90:x+=6
> >>                 SID+=chr(x)
> >>             cookie = Cookie.Cookie('sid', SID); cookie.expires = 
> >> time.time() +
> >> 36000; Cookie.add_cookie(R, cookie)
> >>             q="update "+usertable+" set SID='"+SID+"' where 
> >> name='"+LLRuser+"'
> >> and password='"+LLRpw+"'"
> > 
> > 
> > In mod_python 2.7.X you must flush out the headers before you write  any 
> > data
> > to the response. This is why the order of your stuff is mucked up.
> > 
> >   req.send_http_header()
> > 
> >>             R.write("userq="+q)
> >>             cur.execute(q)
> >>             debugfile.write("Before calling BB.html.\n")
> >>             #R.write("<head><meta http-equiv='refresh'
> >> content='0;url=BB.html'></head>")
> >>             debugfile.write("AFTER calling BB.html.\n")
> >>             sidrefreshing=1
> >>             debugfile.write("END of userrs is not None.\n")
> >>     debugfile.write("Before closing debug file\n")
> >>     debugfile.close()
> >>
> >>
> >> I thought that maybe the meta http-equiv was the problem so I  commented
> >> out but I still get the error.
> >>
> >>
> >>
> >> On Fri, 2006-03-31 at 00:22 -0500, Graham Dumpleton wrote:
> >>
> >>> Alberto Ruiz wrote ..
> >>>
> >>>> I'm getting a very wierd error when I call my python script.  Other
> >>>> Python scripts seem to work fine but one in particular returns a 500
> >>>> server error and the error does not show in the error-log under the
> >>>> virtual domain that I'm working on but on the main error-log.   How can
> >>>> I
> >>>> get additional debugging information to find out the problem?
> >>>>
> >>>> In the error-log I get the following:
> >>>> mod_python: (Re)importing mod_python.publisher from None
> >>>
> >>>
> >>> In mod_python 2.7.11, this message possibly doesn't mean much.
> >>>
> >>>> When I run my python script I get the following:
> >>>>
> >>>> HTTP/1.1 500 Internal Server Error
> >>>> Date: Fri, 31 Mar 2006 04:46:55 GMT
> >>>> Server: Apache/1.3.33 (Unix) PHP/4.4.2 mod_python/2.7.11 Python/ 2.4.2
> >>>> mod_perl/1.29
> >>>> Connection: close
> >>>> Transfer-Encoding: chunked
> >>>> Content-Type: text/html; charset=iso-8859-1
> >>>>
> >>>> 262
> >>>> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
> >>>> <HTML><HEAD>
> >>>> <TITLE>500 Internal Server Error</TITLE>
> >>>> </HEAD><BODY>
> >>>> <H1>Internal Server Error</H1>
> >>>> The server encountered an internal error or
> >>>> misconfiguration and was unable to complete
> >>>> your request.<P>
> >>>> Please contact the server administrator,
> >>>>  root at mydomain.com and inform them of the time the error occurred,
> >>>> and anything you might have done that may have
> >>>> caused the error.<P>
> >>>> More information about this error may be available
> >>>> in the server error log.<P>
> >>>> <HR>
> >>>> <ADDRESS>Apache/1.3.33 Server at mydomain.com Port 80</ADDRESS>
> >>>> </BODY></HTML>
> >>>>
> >>>> 0
> >>>
> >>>
> >>> This message in mod_python 2.7.11 with no message in error log
> >>> generally means that your published function doesn't return anything.
> >>>
> >>> Can you post the most minimal publisher function which shows the
> >>> problem?
> >>>
> >>> Graham
> >>>
> > 
> > _______________________________________________
> > Mod_python mailing list
> > Mod_python at modpython.org
> > http://mailman.modpython.org/mailman/listinfo/mod_python
> > 
> 
> 



More information about the Mod_python mailing list