|
Graham Dumpleton
grahamd at dscpl.com.au
Tue Feb 21 06:27:41 EST 2006
On 21/02/2006, at 10:14 PM, Gavin wrote:
>> All I can suggest then is to modify lib/python/mod_python/
>> Session.py in
>> mod_python source code and add in some debug statements to see what
>> session database name is being set to.
>>
>> class DbmSession(BaseSession):
>>
>> def __init__(self, req, dbm=None, sid=0, secret=None,
>> dbmtype=anydbm,
>> timeout=0, lock=1):
>>
>> if not dbm:
>> opts = req.get_options()
>> if opts.has_key("session_dbm"):
>> dbm = opts["session_dbm"]
>> else:
>> dbm = os.path.join(opts.get('session_directory',
>> tempdir), 'mp_sess.dbm')
>>
>> self._dbmfile = dbm
>> self._dbmtype = dbmtype
>>
>> # XXX DEBUG
>>
>> apache.log_error("dbmfile=%s"%self._dbmfile)
>>
>> Reinstall mod_python and restart Apache.
>>
>> Then when running test, look in Apache error_log to see where it
>> thinks it is getting
>> put. See if file exists if not in /tmp.
>>
> mp_sess_test.dbm file doesn't exists in /tmp. error_log file are as
> following:
Run an interactive Python session and try:
grumpy:~ grahamd$ python
Python 2.3.5 (#1, Mar 20 2005, 20:38:20)
[GCC 3.3 20030304 (Apple Computer, Inc. build 1809)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import anydbm
>>> db = anydbm.open("/tmp/mp_sess_test.dbm",'c')
>>>
If that works, try the same thing in a really simple mod_python handler
independent of Session class. Ie.,
from mod_python import apache
import anydbm
def handler(req):
req.content_type = 'text/plain'
db = anydbm.open("/tmp/mp_sess_test.dbm",'c')
db.close()
req.write('test ok')
return apache.OK
If it works outside of mod_python and not in mod_python, may be some
problem to do with a mixing of wrong versions of shared libraries.
If it doesn't work outside of mod_python either, make sure permissions
on "/tmp" directory look correct, or try creating it in a different
directory
that you own.
Time for me to sleep. Will see how you go in the morning.
Graham
|