#18031 [Fbk->NoF]: PHP engine runs user-based read and disconnect functions when open return false
| From: | sniper@php.net | Date: | Mon, 21 Oct 2002 04:15:58 +0000 |
| Subject: | #18031 [Fbk->NoF]: PHP engine runs user-based read and disconnect functions when open return false | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-22907@lists.php.net to get a copy of this message | ||
ID: 18031
Updated by: sniper@php.net
Reported By: nbrandon@hotmail.com
-Status: Feedback
+Status: No Feedback
Bug Type: Session related
Operating System: Win ME
PHP Version: 4.1.2
New Comment:
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.
Previous Comments:
------------------------------------------------------------------------
[2002-09-30 18:22:16] sniper@php.net
Keeping at "feedback" status until requested feedback is got.
------------------------------------------------------------------------
[2002-09-30 03:54:49] nbrandon@hotmail.com
Will not be able to test the new snapshots until a couple of weeks
time.
------------------------------------------------------------------------
[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