php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #18031 PHP engine runs user-based read and disconnect functions when open return false
Submitted: 2002-06-27 19:51 UTC Modified: 2002-10-20 23:15 UTC
From: nbrandon at hotmail dot com Assigned:
Status: No Feedback Package: Session related
PHP Version: 4.1.2 OS: Win ME
Private report: No CVE-ID: None
View Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
If you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: nbrandon at hotmail dot com
New email:
PHP Version: OS:

 

 [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



Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2002-06-28 06:01 UTC] nbrandon at hotmail dot 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-09-29 13:46 UTC] 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-09-30 03:54 UTC] nbrandon at hotmail dot com
Will not be able to test the new snapshots until a couple of weeks time.
 [2002-09-30 18:22 UTC] sniper@php.net
Keeping at "feedback" status until requested feedback is got.

 [2002-10-20 23:15 UTC] sniper@php.net
No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Open". Thank you.


 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Mon Dec 30 08:01:29 2024 UTC