ID: 21743 Updated by: [EMAIL PROTECTED] Reported By: priyadi at priyadi dot net -Status: Assigned +Status: Feedback Bug Type: DBM/DBA related Operating System: RedHat Linux 7.2 PHP Version: 4.3.0 Assigned To: helly New Comment:
To priyadi: - (1) strange, maybe you can send me a strace outut but not on the list to [EMAIL PROTECTED] is enough. - (4) if the file uses another db layout (e.g. different major release) you will have to updragde the file. But you should have received an errormessage which informs about that. To rmallet: This is intereseting. I suspect more a problem with the way php locks the file since we do not use the locking facilities of the library. So the output of strace would help, again to [EMAIL PROTECTED] is enough. Previous Comments: ------------------------------------------------------------------------ [2003-02-21 13:01:37] rmallett at ccs dot carleton dot ca I encountered the same problem on a Sun Solaris 8 system running apache-1.3.27 and with php 4.3.0 installed as an apache module with dba enabled and db-4.1.25 available as db3, and adding the "-" to the mode flag (c or n) as per your suggestion ([EMAIL PROTECTED]) fixed the problem so it looks like the theory that its a locking problem is right. Anything I should try to help you to fix the problem? I was using the simple example from the PHP manual for testing BTW; that is, <?php $id = dba_open ("/tmp/test.db", "n", "db3"); if (!$id) { echo "dba_open failed\n"; exit; } dba_replace ("key", "This is an example!", $id); if (dba_exists ("key", $id)) { echo dba_fetch ("key", $id); dba_delete ("key", $id); } dba_close ($id); ?> which gives the "Driver initialization failed ..." but which works with "n-". ------------------------------------------------------------------------ [2003-02-06 09:29:39] priyadi at priyadi dot net Hello, sorry for not responding for so long. I have another observation to this elusive problem. - It fails when using mode 'c' but the file doesn't exist already - It succeeds when using mode 'n' and the file doesn't already exist - It succeeds when using mode 'c' and the file exists and it is a valid db3 btree - It fails when using mode 'c' and the file exists but it is not a valid db3 btree Regarding db4 version, I lost access to the system but I think it is version 4.0.14. ------------------------------------------------------------------------ [2003-01-31 01:28:04] [EMAIL PROTECTED] Please update: ext/dba/config.m4 This fixes some problems when linking against a specific library version. If you do not use your systems default db library you must not include ndbm support since that is based on db1 which in turn is db-1.85 or based on db-x where x is 1.85 or x >= 2. I tried the following: - db-3.2 (not shared) and it works. - db-4.1.25 (shared/not shared) and it works. - db-3.3 from system rpm (not shared) and it works. - db-3.3 from source (shared) and it works So i will ask sleepycat for known problems and maybe disable shared dba in case of db-3.2. I missed to answer your question: db libraries *can* do file locking but we tell the library not to do so and use our own locking. To unalize your db4 problems: What extact version are you using (ldd) and which config (but ldd should be enough). ------------------------------------------------------------------------ [2003-01-30 11:38:18] priyadi at priyadi dot net I also encountered segfaults with db4 compiled with --with-db3=dir but not with db3 supplied by redhat. ------------------------------------------------------------------------ [2003-01-29 18:59:10] [EMAIL PROTECTED] Called my contact at Berkeley and got the link to the 3.2 version. Now i am able to reproduce a segfault...I'll look into deeper ASAP ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/21743 -- Edit this bug report at http://bugs.php.net/?id=21743&edit=1