|   | php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login | 
| 
  [2002-06-27 19:51 UTC] nbrandon at hotmail dot 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 PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits             | |||||||||||||||||||||||||||
|  Copyright © 2001-2025 The PHP Group All rights reserved. | Last updated: Fri Oct 31 12:00:01 2025 UTC | 
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.