ID:               3091
 Updated by:       [EMAIL PROTECTED]
 Reported By:      anne dot schoolcraft at mnplan dot state dot mn dot us
-Status:           Open
+Status:           Wont Fix
 Bug Type:         dBase related
 Operating System: RedHat Linux 6.0
 PHP Version:      3.0.12
 New Comment:

We are sorry, but we can not support PHP 3 related problems anymore.
Momentum is gathering for PHP 5, and we think supporting PHP 3 will
lead to a waste of resources which we want to put into getting PHP 5
ready. Of course PHP 4 will continue to be supported for the
forseeable future.




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

[2000-01-05 15:55:01] anne dot schoolcraft at mnplan dot state dot mn
dot us

One other problem with the fix listed above--it doesn't work well with
dbase_get_record_with names.  It 
produces inconsistent output.  But it works fine with
dbase_get_record.


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

[2000-01-05 12:22:04] anne dot schoolcraft at mnplan dot state dot mn
dot us

Figured out a fix, with the help of my colleauge, Brent Lund.  In the
PHP source, in the functions directory,
the file dbase.c needs to be modified.  Change line 348 from 
num_fields = _php3_hash_num_elements(fields->value.ht);
to
num_fields = _php3_hash_num_elements(fields->value.ht) - 1;

The original version always saw the "deleted" field of a record that
dbase_get_record adds onto the end
of the record array.  Adding the -1 drops the unneeded field.
Saying in the PHP code
unset($rec["deleted"]);
was apparently not effective.

My only concern with this fix is that it assumes it is being passed an
array generated by dbase_get_record or
dbase_get_record_with_names.  I'm not sure how it will react if you
send it a "home-made" array.
Anne :)

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

[2000-01-03 12:55:25] anne dot schoolcraft at mnplan dot state dot mn
dot us

Here's my configure line:
./configure --with-apxs=/usr/sbin/apxs
--with-config-file-path=/etc/httpd --with-mysql --with-gd --with-zlib
\
  --with-system-regex --with-dbase

I have written a script to reproduce my error.  It will need to
interact with a dbase file, the contents of which I provide below.

<?php
        $dbf=dbase_open("county.dbf",2);
        $LocIdx=1;
        $numRec=dbase_numrecords($dbf);
        for($i=1;$i<$numRec;$i++)
        {
                //read a record, change one field,and put it back
                $rec=dbase_get_record_with_names($dbf,$i);
                $count=count($rec);
                $rec["FLD001"]=$i%5;
                unset($rec["deleted"]);
                $changed=dbase_replace_record($dbf,$rec,$i);//line 12
                $rightNum=dbase_numfields($dbf);
                if(!$changed)
                        printf("Didn't change record %d.<BR>",$i);
                printf("old record had %d, new has %d should be
%d<BR>",$count,count($rec),$rightNum);
        }
        dbase_close($dbf);
?>  

I am pasting in a dbase file that I have converted to tab-delimited. 
You should be able to paste it into a program such as Excel and save it
as a dbase IV file (county.dbf).  If you have any troubles, feel free to
contact me.  I apologize for the large number of fields, but I felt it
was necessary to use the same fields that caused my original problem. 
I don't know if it is significant that there are 256 fields.

AREA    PERIMETER       MN_CTYCB_       MN_CTYCB_I      FIPS_CTY        
MLMIS_CTY       NAME_4CHAR      NAME_LOWER      NAME_UPPER      FLD001  FLD002  
FLD003  FLD004  FLD005  FLD006  FLD007  FLD009  FLD008  FLD010  FLD011  FLD012  
FLD013  FLD014  FLD015  FLD016  FLD017  FLD019  FLD018  FLD020  FLD021  FLD022  
FLD023  FLD024  FLD025  FLD026  FLD027  FLD029  FLD028  FLD030  FLD031  FLD032  
FLD033  FLD034  FLD035  FLD036  FLD037  FLD039  FLD038  FLD040  FLD041  FLD042  
FLD043  FLD044  FLD045  FLD046  FLD047  FLD049  FLD048  FLD050  FLD051  FLD052  
FLD053  FLD054  FLD055  FLD056  FLD057  FLD059  FLD058  FLD060  FLD061  FLD062  
FLD063  FLD064  FLD065  FLD066  FLD067  FLD069  FLD068  FLD070  FLD071  FLD072  
FLD073  FLD074  FLD075  FLD076  FLD077  FLD079  FLD078  FLD080  FLD081  FLD082  
FLD083  FLD084  FLD085  FLD086  FLD087  FLD089  FLD088  FLD090  FLD091  FLD092  
FLD093  FLD094  FLD095  FLD096  FLD097  FLD099  FLD098  FLD100  FLD101  FLD102  
FLD103  FLD104  FLD105  FLD106  FLD107  FLD109  FLD108  FLD110  FLD111  FLD112  
FLD113  FLD114  FLD115  FLD116  FLD117  FLD119  FLD118  FLD120  FLD121  FLD122  
FLD123  FLD124  FLD125  FLD126  FLD127  FLD129  FLD12!
8       FLD130  FLD131  FLD132  FLD133  FLD134  FLD135  FLD136  FLD137  FLD139  
FLD138  FLD140  FLD141  FLD142  FLD143  FLD144  FLD145  FLD146  FLD147  FLD149  
FLD148  FLD150  FLD151  FLD152  FLD153  FLD154  FLD155  FLD156  FLD157  FLD159  
FLD158  FLD160  FLD161  FLD162  FLD163  FLD164  FLD165  FLD166  FLD167  FLD169  
FLD168  FLD170  FLD171  FLD172  FLD173  FLD174  FLD175  FLD176  FLD177  FLD179  
FLD178  FLD180  FLD181  FLD182  FLD183  FLD184  FLD185  FLD186  FLD187  FLD189  
FLD188  FLD190  FLD191  FLD192  FLD193  FLD194  FLD195  FLD196  FLD197  FLD199  
FLD198  FLD200  FLD201  FLD202  FLD203  FLD204  FLD205  FLD206  FLD207  FLD209  
FLD208  FLD210  FLD211  FLD212  FLD213  FLD214  FLD215  FLD216  FLD217  FLD219  
FLD218  FLD220  FLD221  FLD222  FLD223  FLD224  FLD225  FLD226  FLD227  FLD229  
FLD228  FLD230  FLD231  FLD232  FLD233  FLD234  FLD235  FLD236  FLD237  FLD239  
FLD238  FLD240  FLD241  FLD242  FLD243  FLD244  FLD245  FLD246
4595838464.00000        390257.06250    2       1       77      39      LOTW    
Lake of the Woods       LAKE OF
THE
WOODS   4       4       4       4       4       2       2       2       2       
2       1       1       1       2       4       4       4       4       4       
4       1       1       1       1       1       1       1       1       1       
4       1       1       1       4       1       3       4       4       1       
1       1       4       4       4       1       1       4       1       2       
4       4       1       1       4       4       4       1       1       1       
1       4       1       4       1       1       1       1       1       1       
1       1       1       4       4       0       4       1       3       4       
1       1       1       1       1       1       2       2       2       2       
0       2       2       2       2       2       2       1       1       1       
1               1       1       1       1       4       1       1       1       
3       4       2       2       1       1       1       4       1       4       
1       3       2       1       1       3       1       4       3       4       
3       1       1       1       3       3       1       2       1       1       
3       3       3       4       4       1       1       4       4       4       
4       4       4       4       4       4       4       4       4       4       
2       1       3       4       4       4       4       4       4       4       
4       4       4       4       4       4       4       4       4       1       
4       4       4       4       0       4       4       4       4       4       
3       3       4       4       4       4       0       4       4       4       
4       1       3       3       3       1       1       1       2       1       
3       3       1       3       1       3       3       1       1       1       
1       2       3       1       1       1       1       2       3       3       
1       3       3       3       1       1       1       1       3       2       
1       3       1       3       3       3       1
2861194240.00000        263163.87500    3       2       69      35      KITT    
Kittson KITTSON 2       2       2       2       2       1       1       1       
1       1       1       1       1       2       2       2       2       2       
2       2       1       1       1       1       1       1       1       1       
1       2       1       1       1       2       1       1       1       2       
1       1       1       2       2       2       1       1       2       1       
1       2       2       1       1       2       2       2       1       1       
1       1       2       1       2       1       1       1       1       1       
1       1       1       1       2       2       0       2       1       1       
3       1       1       1       1       1       1       2       2       2       
2       0       2       2       2       2       2       2       1       1       
1       1               1       1       1       1       2       1       1       
1       1       1       1       1       1       1       1       2       1       
2       1       2       1       1       1       1       1       2       1       
2       1       1       1       1       1       1       1       1       1       
1       1       1       1       2       2       1       1       2       2       
2       2       2       2       2       2       2       2       2       2       
2       1       1       1       1       1       2       2       2       2       
2       2       2       2       2       2       2       2       2       2       
1       2       2       2       2       2       2       2       2       2       
2       1       1       2       2       2       2       0       2       2       
2       2       1       1       1       1       1       1       1       1       
1       1       1       1       1       1       1       1       1       1       
1       1       1       1       1       1       1       1       1       1       
1       1       1       1       1       1       1       1       1       1       
1       1       1       1       1       1       1       1

When I run my script, the following message appears for all but the
last record in the file:

Warning: Wrong number of fields specified in
/home/httpd/html/php/bugtest.php3 on line 12
Didn't change record 1.
old record had 256, new has 255 should be 255

My php3.ini file follows:
[PHP_3]

;;;;;;;;;;;;;;;;;;;
; About this file ;
;;;;;;;;;;;;;;;;;;;
; This file controls many aspects of PHP's behavior.  In order for PHP
to
; read it, it must be named 'php3.ini'.  PHP looks for it in the
current
; working directory, in the path designated by the environment
variable
; PHPRC, and in the path that was defined in compile time (in that
order).
; Under Windows, the compile-time path is the Windows directory.  The
; path in which the php3.ini file is looked for can be overriden using
; the -c argument in command line mode.
;
; The syntax of the file is extremely simple.  Whitespace and Lines
; beginning with a semicolon are silently ignored (as you probably
guessed).
; Section headers (e.g. [Foo]) are also silently ignored, even though
; they might mean something in the future (they probably won't).
;
; Options are specified using the syntax key = value or key = "complex
value".
; Key names are *case sensitive*.  foo = bar is different from FOO =
bar.
; 'value' can be any number, word or keyword (keywords are On, Off,
True,
; False, Yes and No, and are case insensitive).
; 'complex value' can be just about anything, expcept for " and a
newline
; Boolean flags can be turned on using the values 1, On, True or Yes.
; They can be turned off using the values 0, Off, False or No.
;
; All the values in the php3.ini-dist file correspond to the builtin
; defaults (that is, if no php3.ini is used, or if you delete these
lines,
; the builtin defaults will be identical).


;;;;;;;;;;;;;;;;;;;;
; Language Options ;
;;;;;;;;;;;;;;;;;;;;

engine                  =       On      ; enable PHP 3.0 parser
short_open_tag  =       On      ; allow the <? tag.  otherwise, only <?php and
<script> tags are recognized.
asp_tags                =       Off ; allow ASP-style <% %> tags
precision               =       14      ; number of significant digits 
displayed in floating
point numbers
y2k_compliance  =       Off     ; whether to be year 2000 compliant (will cause
problems with non y2k compliant browsers)
; Safe Mode
safe_mode               =       Off
safe_mode_exec_dir      =
; Colors for Syntax Highlighting mode.  Anything that's acceptable in
<font color=???> would work.
highlight.string        =       #DD0000
highlight.comment       =       #FF8000
highlight.keyword       =       #007700
highlight.bg            =       #FFFFFF
highlight.default       =       #0000BB
highlight.html          =       #000000


;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

max_execution_time = 30     ; Maximum execution time of each script, in
seconds
memory_limit = 8388608          ; Maximum amount of memory a script may consume
(8MB)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; error_reporting is a bit-field.  Add each number up to get desired
error reporting level
;  1 = Normal errors
;  2 = Normal warnings
;  4 = Parser errors
;  8 = Notices - warnings you can ignore, but sometimes imply a bug
(e.g., using an uninitialized variable)
error_reporting =7      
display_errors  =       On      ; Print out errors (as a part of the HTML 
script)
log_errors              =       Off     ; Log errors into a log file 
(server-specific log,
stderr, or error_log (below))
track_errors    =       Off     ; Store the last error/warning message in
$php_errormsg (boolean)
;error_prepend_string = "<font color=ff0000>"   ; string to output
before an error message
;error_append_string = "</font>"                ; string to output
after an error message
;error_log      =       filename        ; log errors to specified file
;error_log      =       syslog          ; log errors to syslog (Event Log on 
NT, not valid
in Windows 95)
warn_plus_overloading   =       Off             ; warn if the + operator is 
used with
strings


;;;;;;;;;;;;;;;;;
; Data Handling ;
;;;;;;;;;;;;;;;;;
magic_quotes_gpc        =       On              ; magic quotes for incoming 
GET/POST/Cookie
data
magic_quotes_runtime=   Off             ; magic quotes for runtime-generated 
data,
e.g. data from SQL, from exec(), etc.
magic_quotes_sybase     =       Off             ; Use Sybase-style magic quotes 
(escape '
with '' instead of \')
track_vars                      =       On              ; enable 
$HTTP_GET_VARS[], $HTTP_POST_VARS[] and
$HTTP_COOKIE_VARS[] arrays
; automatically add files before or after any PHP 3.0 document
auto_prepend_file       =
auto_append_file        =


;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
include_path    =                   ; UNIX: "/path1:/path2"  Windows:
"\path1;\path2"
doc_root                =                                       ; the root of 
the php pages, used only if nonempty
user_dir                =                                       ; the directory 
under which php opens the script using
/~username, used only if nonempty
;upload_tmp_dir =                       ; temporary directory for HTTP
uploaded files (will use system default if not specified)
upload_max_filesize = 2097152       ; 2 Meg default limit on file
uploads
extension_dir   =       ./                              ; directory in which 
the loadable extensions
(modules) reside


;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
; if you wish to have an extension loaded automaticly, use the
; following syntax:  extension=modulename.extension
; for example, on windows,
; extension=msql.dll
; or under UNIX,
; extension=msql.so
; Note that it should be the name of the module only, no directory
information 
; needs to go here.  Specify the location of the extension with the
extension_dir directive above.


;Windows Extensions
;extension=php3_mysql.dll
;extension=php3_calendar.dll
;extension=php3_dbase.dll
;extension=php3_gd.dll
;extension=php3_dbm.dll
;extension=php3_mssql.dll
;extension=php3_zlib.dll
;extension=php3_filepro.dll
;extension=php3_imap4r1.dll
;extension=php3_ldap.dll
;extension=php3_crypt.dll
;extension=php3_msql2.dll
;extension=php3_odbc.dll

;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

[Syslog]
define_syslog_variables = Off   ; Whether or not to define the various
syslog variables,
                                                                ; e.g. 
$LOG_PID, $LOG_CRON, etc.  Turning it off is a
                                                                ; good idea 
performance-wise.  In runtime, you can define
                                                                ; these 
variables by calling define_syslog_variables()


[mail function]
SMTP                    =       localhost                       ;for win32 only
sendmail_from   =       [EMAIL PROTECTED]       ;for win32 only
sendmail_path   =                                               ;for unix only, 
may supply arguments as well
(default is sendmail -t)

[Debugger]
debugger.host   =       localhost
debugger.port   =       7869
debugger.enabled        =       False

[Logging]
; These configuration directives are used by the example logging
mechanism.
; See examples/README.logging for more explanation.
;logging.method    = db
;logging.directory = /path/to/log/directory

[SQL]
sql.safe_mode   =       Off

[ODBC]
;uodbc.default_db               =       Not yet implemented
;uodbc.default_user             =       Not yet implemented
;uodbc.default_pw               =       Not yet implemented
uodbc.allow_persistent  =       On      ; allow or prevent persistent links
uodbc.max_persistent    =       -1      ; maximum number of persistent links. -1
means no limit
uodbc.max_links                 =       -1      ; maximum number of links 
(persistent+non
persistent). -1 means no limit
uodbc.defaultlrl        =       4096    ; Handling of LONG fields. Returns 
number of
bytes to variables, 0 means passthru
uodbc.defaultbinmode    =       1       ; Handling of binary data. 0 means 
passthru,
1 return as is, 2 convert to char
; See the documentation on odbc_binmode and odbc_longreadlen for an
explanation of uodbc.defaultlrl
; and uodbc.defaultbinmode

[MySQL]
mysql.allow_persistent  =       On      ; allow or prevent persistent link
mysql.max_persistent    =       -1      ; maximum number of persistent links. -1
means no limit
mysql.max_links                 =       -1      ; maximum number of links 
(persistent+non
persistent).  -1 means no limit
mysql.default_port              =               ; default port number for 
mysql_connect().  If
unset,
                                                                ; 
mysql_connect() will use the $MYSQL_TCP_PORT, or the
mysql-tcp
                                                                ; entry in 
/etc/services, or the compile-time defined
MYSQL_PORT
                                                                ; (in that 
order).  Win32 will only look at MYSQL_PORT.
mysql.default_host              =               ; default host for 
mysql_connect() (doesn't
apply in safe mode)
mysql.default_user              =               ; default user for 
mysql_connect() (doesn't
apply in safe mode)
mysql.default_password  =               ; default password for mysql_connect()
(doesn't apply in safe mode)
                                                                ; Note that 
this is generally a *bad* idea to store passwords
                                                                ; in this file. 
 *Any* user with PHP access can run
                                                                ; 'echo 
cfg_get_var("mysql.default_password")' and reveal that
                                                                ; password!  
And of course, any users with read access to this
                                                                ; file will be 
able to reveal the password as well.

[mSQL]
msql.allow_persistent   =       On      ; allow or prevent persistent link
msql.max_persistent             =       -1      ; maximum number of persistent 
links. -1
means no limit
msql.max_links                  =       -1      ; maximum number of links 
(persistent+non
persistent).  -1 means no limit

[PostgresSQL]
pgsql.allow_persistent  =       On      ; allow or prevent persistent link
pgsql.max_persistent    =       -1      ; maximum number of persistent links. -1
means no limit
pgsql.max_links                 =       -1      ; maximum number of links 
(persistent+non
persistent).  -1 means no limit

[Sybase]
sybase.allow_persistent =       On      ; allow or prevent persistent link
sybase.max_persistent   =       -1      ; maximum number of persistent links. -1
means no limit
sybase.max_links                =       -1      ; maximum number of links 
(persistent+non
persistent).  -1 means no limit
;sybase.interface_file  =       "/usr/sybase/interfaces"
sybase.min_error_severity       =       10      ; minimum error severity to 
display
sybase.min_message_severity     =       10      ; minimum message severity to 
display
sybase.compatability_mode       = Off   ; compatability mode with earlier
versions of PHP 3.0.
                                                                        ; If 
on, this will cause PHP to automatically assign types to
results
                                                                        ; 
according to their Sybase type, instead of treating them all
as
                                                                        ; 
strings.  This compatability mode will probably not stay
around
                                                                        ; 
forever, so try applying whatever necessary changes to your
code,
                                                                        ; and 
turn it off.

[Sybase-CT]
sybct.allow_persistent  =       On              ; allow or prevent persistent 
link
sybct.max_persistent    =       -1              ; maximum number of persistent 
links. -1
means no limit
sybct.max_links                 =       -1              ; maximum number of 
links (persistent+non
persistent).  -1 means no limit
sybct.min_server_severity       =       10      ; minimum server message 
severity to
display
sybct.min_client_severity       =       10      ; minimum client message 
severity to
display

[bcmath]
bcmath.scale    =       0       ; number of decimal digits for all bcmath 
functions

[browscap]
;browscap       =       extra/browscap.ini

[image]
;ps.default_encoding    =       "/etc/t1lib/enc/IsoLatin1.enc"  ; default
character encoding vector for PostScript Type1 fonts

[Informix]
ifx.default_host                =               ; default host for 
ifx_connect() (doesn't apply in
safe mode)
ifx.default_user                =               ; default user for 
ifx_connect() (doesn't apply in
safe mode)
ifx.default_password            =               ; default password for 
ifx_connect() (doesn't
apply in safe mode)
ifx.allow_persistent            =       On      ; allow or prevent persistent 
link
ifx.max_persistent              =       -1      ; maximum number of persistent 
links. -1 means
no limit
ifx.max_links                   =       -1      ; maximum number of links 
(persistent+non
persistent).  -1 means no limit
ifx.textasvarchar               =       0       ; if set on, select statements 
return the
contents of a text blob instead of it's id
ifx.byteasvarchar               =       0       ; if set on, select statements 
return the
contents of a byte blob instead of it's id
ifx.charasvarchar               =       0       ; trailing blanks are stripped 
from fixed-length
char columns. May help the life
                                                ; of Informix SE users. 
ifx.blobinfile                  =       0       ; if set on, the contents of 
text&byte blobs are
dumped to a file instead of
                                                ; keeping them in memory
ifx.nullformat                  =       0       ; NULL's are returned as empty 
strings, unless
this is set to 1. In that case,
                                                ; NULL's are returned as string 
'NULL'.



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


-- 
Edit this bug report at http://bugs.php.net/?id=3091&edit=1

Reply via email to