ID: 15260 Comment by: zakd at max-t dot com Reported By: wweng at kencast dot com Status: No Feedback Bug Type: *Directory/Filesystem functions Operating System: Linux PHP Version: 4.0.5 New Comment:
This problem still exists in PHP4.3.2. RedHat8.0, I'm using, does support 64 bits. If I have a 4G file -rw-r--r-- 1 root root 4.0G Oct 15 11:00 file4gb and run stat in the shell, it does the right thing and returns %stat -t file4gb <output> file4gb 4299161600 8396800 81a4 0 0 c 72126888 1 0 0 1066229977 1066230022 1066237543 4096 </output> but PHP file I/Os don't seem to be able to handle 64 bits Previous Comments: ------------------------------------------------------------------------ [2002-03-20 00:00:03] php-bugs at lists dot php dot net No feedback was provided for this bug for over a month, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open". ------------------------------------------------------------------------ [2002-01-28 20:53:13] wweng at kencast dot com >From what I had been researching on google, compiling a package with uniformed 64 bits I/O functions requires -D_FILE_OFFSET_BITS=64 (and kernel 2.4.x and glibc 2.2.2+). I greped through the php 4.1.1 source code downloaded from php.net, couldn't find any trace of such option in any of the files. (At least I would think it should exist in the Makefile.ams) Maybe it had been forgotten? ------------------------------------------------------------------------ [2002-01-28 20:43:45] [EMAIL PROTECTED] If the OS is compiled and installed on a 64 bit system, or with large file support (read: kernel, libc, others) then calls to stat() and friends return 64-bit structures. You don't need to call stat64 expressly. A stock RedHat-7.2 box isn't 64bit compliant unless it's compiled that way. The VCWD_STAT macro uses stat(path, buff), not stat(path, mode). I've had a look at stat.h and see the references to stat64(path, buff) if large file support is defined, but I'm in a little over my head here, so I bow to [EMAIL PROTECTED]'s mastery of php internals. :) I don't have access to a 64bit box or fs to confirm, so I guess I jumped the gun on this one, but IMHO, this isn't a PHP *bug*. Sorry for the confusion. ------------------------------------------------------------------------ [2002-01-28 15:44:49] wweng at kencast dot com I believe I had found the reason of this bug. file_exists function ultimately calls VCWD_STAT function defined in TSRM/tsrm_virtual_cwd.h. However, the VCWD_STAT function is only a macro for stat(path, mode), and under Linux, you need stat64 for 64 bit file stats operations. hmm, and all the file I/Os under PHP right now do not support 64 bits. This is bad... ------------------------------------------------------------------------ [2002-01-28 15:26:54] wweng at kencast dot com Can not seem to find the RPM(php-4.1.1) for Redhat 7.2. :( There is no build environment on testing machines. ------------------------------------------------------------------------ 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/15260 -- Edit this bug report at http://bugs.php.net/?id=15260&edit=1