PHP 4.0 Bug #9681 Updated: can't use interbase functions in user defined sessions
| From: | olivier at lx dot student dot wau dot nl | Date: | Mon, 12 Mar 2001 12:44:49 +0000 |
| Subject: | PHP 4.0 Bug #9681 Updated: can't use interbase functions in user defined sessions | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-48726@lists.php.net to get a copy of this message | ||
ID: 9681
User Update by: olivier@lx.student.wau.nl
Status: Open
Bug Type: *Session related
Description: can't use interbase functions in user defined sessions
On a different machine, the same code generates as segfault. PHP is a freshly compiled ( with
--enable-debug) 4.0.4pl1, Apache is 1.3.9 from Debian Potato. The backtrace is:
#0 0x40392fbb in _res_resultcodes () from /usr/lib/apache/1.3/libdav.so
#1 0x4031974c in yy_state_buf () from /usr/lib/apache/1.3/libphp4.so
#2 0x40228a87 in execute (op_array=0x80fbc40) at ./zend_execute.c:2283
#3 0x4022f5c5 in convert_to_double (op=0x80b76d0) at zend_operators.c:317
#4 0x4022ef57 in zend_string_to_double (number=0x80b76d0 "×\003", length=0)
at zend_operators.c:75
#5 0x40277c10 in php_array_walk (target_hash=0x80ff784, userdata=0x2)
at array.c:1013
#6 0x40278247 in _valid_var_name (varname=0x4032ab30 "\204\235\n\b\005")
at array.c:1149
#7 0x4027470a in ps_files_cleanup_dir (dirname=0x4031974c "\f\030\022",
maxlifetime=0) at mod_files.c:176
#8 0x40277169 in php_if_end (ht=1076991820, return_value=0x0, this_ptr=0x0,
return_value_used=0) at array.c:750
#9 0x402771ac in php_if_prev (ht=1, return_value=0x6, this_ptr=0x0,
return_value_used=1076086069) at array.c:762
#10 0x4023c573 in zend_hash_find (ht=0x80b9dd0,
arKey=0x402f44a4 "zend_hash.c", nKeyLength=687, pData=0x4023ee01)
at zend_hash.c:852
#11 0x4023ee77 in zend_if_strncmp (ht=1077076512, return_value=0x4023c528,
this_ptr=0x809e3ec, return_value_used=1076074916)
at zend_builtin_functions.c:261
#12 0x402399f5 in zend_load_extension (path=0x4031974c "\f\030\022")
at zend_extensions.c:46
#13 0x4025090c in cfg_get_entry (name=0x0, name_length=0) at php_ini.c:253
#14 0x4024d7d7 in php_request_startup () at main.c:636
#15 0x8051bdc in ap_run_cleanup ()
#16 0x8050c54 in ap_clear_pool ()
#17 0x8050cb4 in ap_destroy_pool ()
#18 0x8050c40 in ap_clear_pool ()
#19 0x805c13f in ap_child_terminate ()
#20 0x805c66c in ap_child_terminate ()
#21 0x805c789 in ap_child_terminate ()
#22 0x805cc3b in ap_child_terminate ()
#23 0x805d2ed in main ()
#24 0x400c0a42 in __libc_start_main () from /lib/libc.so.6
Previous Comments:
---------------------------------------------------------------------------
[2001-03-11 08:36:27] olivier@lx.student.wau.nl
I wrote my own session handlers, for use with interbase. Logging is done to a file that is truncated
by the open function, and then a line appended by each other session function.
When I start with the example session handler from the manual, everything works ok. Then I start
adding interbase functions. Session reading works. BUT, when I add interbase functions to writing,
that function is not called anymore (it doesn't write it's entry in the logfile anymore).
The same for adding ibase_commit() or ibase_close() to the close function, it doesn't write
it's log entry anymore.
I tested the queries, and they _do_ work.
A working write function:
function ibs_write($key, $val) {
global $ibs_local_key, $ibs_db_id;
$fd = fopen('/home/pkedu/olivier/nwuser/log.out', 'a');
$dbkey = addslashes($key.$ibs_local_key);
$val = addslashes($val);
$now = time();
$query = "update user_info set session_data='$val' where user_id = (select user_id
from user_session where session_key='$dbkey')";
// $ret = ibase_query($ibs_db_id, $query);
fputs($fd, $query."n");
fclose($fd);
}
This is the same function where it doesn't work anymore, only thje comment is removed, and now
the query is not written to the logfile anymore:
function ibs_write($key, $val) {
global $ibs_local_key, $ibs_db_id;
$fd = fopen('/home/pkedu/olivier/nwuser/log.out', 'a');
$dbkey = addslashes($key.$ibs_local_key);
$val = addslashes($val);
$now = time();
$query = "update user_info set session_data='$val' where user_id = (select user_id
from user_session where session_key='$dbkey')";
$ret = ibase_query($ibs_db_id, $query);
fputs($fd, $query."n");
fclose($fd);
}
The system does not have any other problems with interbase or sessions, I tried normal and
persistant database connections, PHP does not crash (no reports in the apache error_log). Apache is
Apache/1.3.9 from Debian Potato. Please contact me for any missing information.
---------------------------------------------------------------------------
Full Bug description available at: http://bugs.php.net/?id=9681