php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #38357 dbase_open can't open DBase 3 dbf file.
Submitted: 2006-08-06 13:55 UTC Modified: 2006-08-14 09:42 UTC
From: rodrigo at fabricadeideias dot com Assigned: mike (profile)
Status: Closed Package: Feature/Change Request
PHP Version: 5.1.4 OS: Linux
Private report: No CVE-ID: None
 [2006-08-06 13:55 UTC] rodrigo at fabricadeideias dot com
Description:
------------
When trying to open a DBase 3 dbf file I get the following error:

Unable to get header

Warning: dbase_open(): unable to open database 12MU2500G.dbf in /var/www/localhost/htdocs/shape/dbase_open_bug.php on line 4

I believe this is a DBase 3 file as file returns:

# file 12MU2500G.dbf
12MU2500G.dbf: DBase 3 data file (22 records)

I also believe this file isn't corrupted as both DBD::XBase module for Perl and OpenOffice Base read the file without problems.

Reproduce code:
---------------
<?php
$db = dbase_open('12MU2500G.dbf', 0);
echo $db ? "Opened.\n" : "Not opened.\n";
?>

Expected result:
----------------
Opened.

Actual result:
--------------
Unable to get header

Warning: dbase_open(): unable to open database 12MU2500G.dbf in /var/www/localhost/htdocs/shape/dbase_open_bug.php on line 2
Not opened.


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2006-08-06 14:00 UTC] rodrigo at fabricadeideias dot com
There is a downloadable copy of the dbf file at <http://dev.ipresto.com.br/downloads/12MU2500G.dbf>.
 [2006-08-06 16:01 UTC] mike@php.net
"F" (float?) fields are not supported, so I changed the report to FR.

Can you post a record with all values, how it should look like?

 [2006-08-06 22:02 UTC] rodrigo at fabricadeideias dot com
There are float fields in this dbf file. As per XBase file definition (<http://www.clicketyclick.dk/databases/xbase/format/data_types.html#DATA_TYPES>) F fields are floating fields represented as up to 20 digits.

Here is a complete record of the .dbf file (as per Perl reading):

AREA_1: 2984.643
MSLINK: 74
NOME: Porto Acre
PERIMETRO_: 270.266
CODIGO: 1200807
AREA_TOT_G: 2984.643
SEDE: 1
LONGITUDES: -67.533
MAPID: 99
LATITUDESE: -9.588
GEOCODIGO: 1200807
 [2006-08-08 13:33 UTC] rodrigo at fabricadeideias dot com
I have a patch available at <http://dev.ipresto.com.br/downloads/dbase-float.patch> that implements floating field support for php's dbase functions.

<off-topic>
I've tried 3 times to subscribe to <php-dev@lists.php.net> to send this patch without success: there's definitely something wrong with the subscribe process as I never receive the first email the system is supposed to send me during the subscription process.
</off-topic>

Please consider it for inclusion. The patch is relative to the relased 5.1.4 version.
 [2006-08-08 14:58 UTC] mike@php.net
I'll take a look at it.

The php-dev list has been closed long time ago.
 [2006-08-14 09:42 UTC] mike@php.net
Implemented in PHP_5_2 and HEAD.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Mon Dec 30 14:01:28 2024 UTC