#18031 [Fbk->Opn]: PHP engine runs user-based read and disconnect functions when open return false
ID: 18031
User updated by: nbrandon@hotmail.com
Reported By: nbrandon@hotmail.com
-Status: Feedback
+Status: Open
Bug Type: Session related
Operating System: Win ME
PHP Version: 4.1.2
New Comment:
Will not be able to test the new snapshots until a couple of weeks
time.
Previous Comments:
------------------------------------------------------------------------
[2002-09-29 13:46:06] iliaa@php.net
Please try using this CVS snapshot:
http://snaps.php.net/php4-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php4-win32-latest.zip
------------------------------------------------------------------------
[2002-06-28 06:01:13] nbrandon@hotmail.com
Just looked at the code for php4/ext/session/session.c revision 1.310.
I'm no real coder but, I believe the area of code thats causing the
problem is
...
static void php_session_initialize(TSRMLS_D)
{
char *val;
int vallen;
/* Open session handler first */
if (PS(mod)->open(&PS(mod_data), PS(save_path), PS(session_name)
TSRMLS_CC) == FAILURE) {
php_error(E_ERROR, "Failed to initialize session module");
return;
}
...
I believe the return should read
return FAILURE;
I could be completely way-off - but thats my 2-cents.
------------------------------------------------------------------------
[2002-06-27 19:51:50] nbrandon@hotmail.com
I have created my own session handler using both a function and class
based approach. On both occasions, when the "open" function returns a
failure - "return false;", PHP engine tries to run both the "read" and
"disconnect" functions. This causes a fatal error as shown below.
Fatal error: Call to undefined function: query() in
f:\cvs_dev\Neutec\website\www.xxxxxxxx.co.uk\site\include\DBSession.class.inc
on line 139
Fatal error: Call to undefined function: disconnect() in
f:\cvs_dev\Neutec\website\www.xxxxxxxx.co.uk\site\include\DBSession.class.inc
on line 109
On both lines, PHP is trying to connect to the database using a
database handler variable, and since the variable has not been
initialised (because the "open" function failed), these fatal errors
occur.
If the PHP engine could not "open" a session, then it should not try
and "read" or "disconnect" a session on exiting.
Full source code can be supplied on request.
Many Thanks
Nick
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=18031&edit=1
Thread (6 messages)