ID: 24824 User updated by: php at johnlevine dot com Reported By: php at johnlevine dot com Status: Open Bug Type: DBM/DBA related Operating System: BSD/OS 4.3.1 PHP Version: 4.3.2 Assigned To: helly New Comment:
It turns out on my system the ndbm is really a wrapper around the more recent Berkeley db that uses dbopen(). The problem seems to be that the ndbm library appends .db to file name, so if you open "foo", it really opens "foo.db". There's a bunch of code in php_dba_open that distrusts ndbm's locking and tries to open the file and lock it, but that code doesn't know that the file is really called foo.db and gets confused. The locking code is a mess. If it's written down anywhere what it's supposed to do, I can probably come up with a simple patch or rewrite that will work anywhere. The obvious question is why it tries to do its own lockf rather than use the one built into ndbm. Previous Comments: ------------------------------------------------------------------------ [2003-07-27 14:05:52] php at johnlevine dot com All the system libraries are the standard ones. We may have an arcane difference between BSD/OS and other BSDs, assuming we know this works on other BSDs. I could try it on FreeBSD 4.8. tom:johnl:php-4.3.2$ php -r 'echo print_r(dba_handlers());' Array ( [0] => ndbm [1] => cdb [2] => cdb_make [3] => flatfile ) ------------------------------------------------------------------------ [2003-07-27 12:33:35] [EMAIL PROTECTED] The result should be impossible with normal builds. Did you compile your own libc or something like that? Please execute: php -r 'echo print_r(dba_handlers());' You could also provide me with your config.log per email but stick to the list for the rest. ------------------------------------------------------------------------ [2003-07-27 11:41:18] php at johnlevine dot com tom:johnl:php-4.3.2$ TEST_PHP_EXECUTABLE=/usr/local/bin/php php run-tests.php ext/dba ===================================================================== CWD : /home/src/php-4.3.2 PHP : /usr/local/bin/php PHP_SAPI : cli PHP_VERSION : 4.3.2 ZEND_VERSION: 1.3.0 PHP_OS : BSD/OS INI actual : /usr/local/lib/php.ini More .INIs : Extra dirs : ===================================================================== Running selected tests. FAIL DBA File Creation Test [ext/dba/tests/dba001.phpt] FAIL DBA Insert/Fetch Test [ext/dba/tests/dba002.phpt] FAIL DBA Insert/Replace/Fetch Test [ext/dba/tests/dba003.phpt] FAIL DBA Multiple Insert/Fetch Test [ext/dba/tests/dba004.phpt] FAIL DBA FirstKey/NextKey Loop Test With 5 Items [ext/dba/tests/dba005.phpt] FAIL DBA FirstKey/NextKey with 2 deletes [ext/dba/tests/dba006.phpt] FAIL DBA Multiple File Creation Test [ext/dba/tests/dba007.phpt] FAIL DBA magic_quotes_runtime Test [ext/dba/tests/dba008.phpt] FAIL DBA dba_popen Test [ext/dba/tests/dba009.phpt] FAIL DBA CDB handler test [ext/dba/tests/dba_cdb.phpt] FAIL DBA CDB_MAKE handler test [ext/dba/tests/dba_cdb_make.phpt] PASS DBA CDB handler test (read only) [ext/dba/tests/dba_cdb_read.phpt] FAIL DBA DB2 handler test [ext/dba/tests/dba_db2.phpt] FAIL DBA DB3 handler test [ext/dba/tests/dba_db3.phpt] FAIL DBA DB4 handler test [ext/dba/tests/dba_db4.phpt] FAIL DBA DBM handler test [ext/dba/tests/dba_dbm.phpt] FAIL DBA FlatFile handler test [ext/dba/tests/dba_flatfile.phpt] FAIL DBA GDBM handler test [ext/dba/tests/dba_gdbm.phpt] FAIL DBA NDBM handler test [ext/dba/tests/dba_ndbm.phpt] tom:johnl:php-4.3.2$ ldd /usr/local/bin/php libm.so => /shlib/libm.so.0.0 (0x48171000) libdl.so => /shlib/libdl.so (0x48182000) libgcc.so.1 => /shlib/libgcc.so.1 (0x48185000) libc.so.2 => /shlib/libc.so.2 (0x48191000) ------------------------------------------------------------------------ [2003-07-27 11:27:46] [EMAIL PROTECTED] Please provide the outputs of the following two commands using CLI or CGI version of php: 1) php run-tests.php ext/dba 2) ldd php ------------------------------------------------------------------------ [2003-07-27 11:22:26] php at johnlevine dot com On my system, it crashes with any dbm file, even one with no entries. ------------------------------------------------------------------------ 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/24824 -- Edit this bug report at http://bugs.php.net/?id=24824&edit=1