ID: 23975
Updated by: [email]hellyphp.net[/email]
Reported By: rhalstenbach at t-online dot de
-Status: Assigned
+Status: Wont fix
Bug Type: DBM/DBA related
Operating System: win32 only
-PHP Version: 4.3.3
+PHP Version: *
Assigned To: helly
New Comment:

There is no way of doing it correct on windows and changing the
defaults makes no sense either.
Thus working with db2/db3/db4/gdb,/ndbm requires to manually specify a
non blocking access mode.


Previous Comments:
------------------------------------------------------------------------

[2003-08-23 16:09:59] fabio_heller at yahoo dot it

curtois wrote

"The bug I submitted (25115) was declared "duplicate" with this one."

Same thing happened to me (25090) as in this post the precise error
occurred (Driver initialization failed for...) isnt't specified so the
search engine doesn't help in finding it.

Anyway the problem is still present in cvs version for WIN and
specially it isn't possibile to use "c" mode to create a new db.

------------------------------------------------------------------------

[2003-08-19 04:48:42] courtois at nouvo dot com

The bug I submitted (25115) was declared "duplicate" with this one.

I experience the problem only when I try to open a file which is not in
the current directory.

My 2 cents

------------------------------------------------------------------------

[2003-06-15 08:56:32] [email]hellyphp.net[/email]

Seems to be a windows only problem. The bug is fixed for *nix.

------------------------------------------------------------------------

[2003-06-10 05:19:49] adam at saki dot com dot au

This is actually because the locking will prematurely create an empty
file, causing the VCWD_STAT command in dba_db3.c to return 0, resulting
in the wrong parameters to db_open.

This can be verified by putting a stat command after the lock detection
code and before the call to open (line 590 in ext/dba/dba.c).

------------------------------------------------------------------------

[2003-06-03 03:43:56] rhalstenbach at t-online dot de

The new locking feature (introduced with 4.3.0) does not work correctly
in default mode "d". Very annoying because it is the default mode ...

Example:

<?php
$d1 = dba_open("c:/www/htdocs/dbfile", "c", "db3); // Old syntax,
specifying no locking mode means mode "d", i.e. same as "cd"

if ($d1 === FALSE) die("Could not open dbfile");
?>

Same problem for mode "w".

It works correctly for locking mode "l" and for suppressing locking via
"-". Obviously the dba_open() function tries to create a lock file with
exactly the same name as the database file - what fails of course.

Tested on WindowsXP with db3, but i think it will fail for every
db-driver (except gdbm) on every OS.

------------------------------------------------------------------------


--
Edit this bug report at [url]http://bugs.php.net/?id=23975&edit=1[/url]