Bug #27792 [Com]: [PATCH] Functions fail on large files (filesize,is_file,is_dir,readdir)

2013-08-30 Thread mail dot pourri at laposte dot net
Edit report at https://bugs.php.net/bug.php?id=27792edit=1

 ID: 27792
 Comment by: mail dot pourri at laposte dot net
 Reported by:kode at kodekrash dot com
 Summary:[PATCH] Functions fail on large files
 (filesize,is_file,is_dir,readdir)
 Status: Critical
 Type:   Bug
 Package:Filesystem function related
 Operating System:   * (LFS)
 PHP Version:5.*, 6CVS (2009-04-30)
 Block user comment: N
 Private report: N

 New Comment:

This is the most absurd comment I've ever seen!
The software does not work as expected, please fix your machine.

I've attached a new updated version of the patch against version 5.5.1
I've no time to backport the patch to any previous version, please be my guest 
if 
you need it.

Some comments about the patch:
1) Changes size_t to off_t at required places in the code (this will only work 
if 
the LFS mode is specified at compilation/configuration time, that is if you 
type 
CFLAGS='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ./configure --usual-args

2) Pass all the tests that where passing without the patch

3) Fix a test that was failing without the patch (you can't mmap a pipe's file 
descriptor, the patch prevent doing so instead of failing at runtime) 

4) Returns a double when/where the file size/offset is larger than 2^32 bytes. 
This means that file with size up to 2^52 (the size of a double's mantissa) can 
now be used with PHP on 32 bits machine. This is not the plain 64 bits, but 
adding 
a new type to PHP for 64 bits integer would be a much larger work. For file 
size/offset below 2^32 bytes, the previous type (integer) is still used, so 
backward compatibility is kept. For file larger than 2^52 bytes, approximate 
values are used (this is still not an issue since reading/writing such file 
would 
still work since it's done in C) 

5) Loops on copy_stream/passthru until the complete stream is read, unlike the 
previous behavior of only reading up to the first 2GB of the file.

Let me know if it helps.


Previous Comments:

[2013-05-29 09:57:27] Sjon at hortensius dot net

According to http://3v4l.org/sBClC; this is not a problem on a 64 bits linux 
machine (on any php version). I propose (since this bug obviously won't be 
fixed) 
to close this issue and tell people to use 64 bits machines instead of trying 
to 
get LFS support in PHP


[2012-08-09 13:28:31] adu at rdsor dot ro

@marcb

I tested it in PHP 5.4.0 (cli) (built: Apr 12 2012 13:02:59)) on Ubuntu 12.04 
kernel 3.0.0-19 i686 and the BUG is still here.

Reproduced code:
$fname = 'file_of_7GB';
var_dump(filesize( $fname ));
// PHP Warning:  filesize(): stat failed for file_of_7GB in php_bug_27792.php 
on line 4
// dumps bool(false)
var_dump(is_file( $fname ));
// dumps bool(false)
var_dump(is_dir( $fname ));
// dumps bool(false)


$fname = 'file_of_354MB';
var_dump(filesize( $fname ));
// dumps int(370336155)
var_dump(is_file( $fname ));
// dumps bool(true)
var_dump(is_dir( $fname ));
// dumps bool(false)


[2011-01-05 04:46:23] marcb at voicemeup dot com

Is anyone able to confirm if this was fixed in any of the 5.X branch ?

This is a pretty stupid problem to have to deal with !


[2009-11-12 10:27:45] boite dot pour dot spam at gmail dot com

The patch from Wez doesn't work, as it assumes size_t are 64 bits, which is not 
the case, even when LFS is defined.

The patch from Mail Pourri works on 5.3.0 (I haven't tested in 5.3.1)


[2009-09-14 08:59:36] j...@php.net

The latest patch for this:

  http://www.php.net/~wez/lfs.diff




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

https://bugs.php.net/bug.php?id=27792


-- 
Edit this bug report at https://bugs.php.net/bug.php?id=27792edit=1


Bug #27792 [Com]: [PATCH] Functions fail on large files (filesize,is_file,is_dir,readdir)

2013-05-29 Thread Sjon at hortensius dot net
Edit report at https://bugs.php.net/bug.php?id=27792edit=1

 ID: 27792
 Comment by: Sjon at hortensius dot net
 Reported by:kode at kodekrash dot com
 Summary:[PATCH] Functions fail on large files
 (filesize,is_file,is_dir,readdir)
 Status: Critical
 Type:   Bug
 Package:Filesystem function related
 Operating System:   * (LFS)
 PHP Version:5.*, 6CVS (2009-04-30)
 Block user comment: N
 Private report: N

 New Comment:

According to http://3v4l.org/sBClC; this is not a problem on a 64 bits linux 
machine (on any php version). I propose (since this bug obviously won't be 
fixed) 
to close this issue and tell people to use 64 bits machines instead of trying 
to 
get LFS support in PHP


Previous Comments:

[2012-08-09 13:28:31] adu at rdsor dot ro

@marcb

I tested it in PHP 5.4.0 (cli) (built: Apr 12 2012 13:02:59)) on Ubuntu 12.04 
kernel 3.0.0-19 i686 and the BUG is still here.

Reproduced code:
$fname = 'file_of_7GB';
var_dump(filesize( $fname ));
// PHP Warning:  filesize(): stat failed for file_of_7GB in php_bug_27792.php 
on line 4
// dumps bool(false)
var_dump(is_file( $fname ));
// dumps bool(false)
var_dump(is_dir( $fname ));
// dumps bool(false)


$fname = 'file_of_354MB';
var_dump(filesize( $fname ));
// dumps int(370336155)
var_dump(is_file( $fname ));
// dumps bool(true)
var_dump(is_dir( $fname ));
// dumps bool(false)


[2011-01-05 04:46:23] marcb at voicemeup dot com

Is anyone able to confirm if this was fixed in any of the 5.X branch ?

This is a pretty stupid problem to have to deal with !


[2009-11-12 10:27:45] boite dot pour dot spam at gmail dot com

The patch from Wez doesn't work, as it assumes size_t are 64 bits, which is not 
the case, even when LFS is defined.

The patch from Mail Pourri works on 5.3.0 (I haven't tested in 5.3.1)


[2009-09-14 08:59:36] j...@php.net

The latest patch for this:

  http://www.php.net/~wez/lfs.diff


[2009-07-11 13:40:57] mail dot pourri at laposte dot net

Please see fix in http://bugs.php.net/bug.php?id=48886




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

https://bugs.php.net/bug.php?id=27792


-- 
Edit this bug report at https://bugs.php.net/bug.php?id=27792edit=1


Bug #27792 [Com]: [PATCH] Functions fail on large files (filesize,is_file,is_dir,readdir)

2012-08-09 Thread adu at rdsor dot ro
Edit report at https://bugs.php.net/bug.php?id=27792edit=1

 ID: 27792
 Comment by: adu at rdsor dot ro
 Reported by:kode at kodekrash dot com
 Summary:[PATCH] Functions fail on large files
 (filesize,is_file,is_dir,readdir)
 Status: Critical
 Type:   Bug
 Package:Filesystem function related
 Operating System:   * (LFS)
 PHP Version:5.*, 6CVS (2009-04-30)
 Block user comment: N
 Private report: N

 New Comment:

@marcb

I tested it in PHP 5.4.0 (cli) (built: Apr 12 2012 13:02:59)) on Ubuntu 12.04 
kernel 3.0.0-19 i686 and the BUG is still here.

Reproduced code:
$fname = 'file_of_7GB';
var_dump(filesize( $fname ));
// PHP Warning:  filesize(): stat failed for file_of_7GB in php_bug_27792.php 
on line 4
// dumps bool(false)
var_dump(is_file( $fname ));
// dumps bool(false)
var_dump(is_dir( $fname ));
// dumps bool(false)


$fname = 'file_of_354MB';
var_dump(filesize( $fname ));
// dumps int(370336155)
var_dump(is_file( $fname ));
// dumps bool(true)
var_dump(is_dir( $fname ));
// dumps bool(false)


Previous Comments:

[2011-01-05 04:46:23] marcb at voicemeup dot com

Is anyone able to confirm if this was fixed in any of the 5.X branch ?

This is a pretty stupid problem to have to deal with !


[2009-11-12 10:27:45] boite dot pour dot spam at gmail dot com

The patch from Wez doesn't work, as it assumes size_t are 64 bits, which is not 
the case, even when LFS is defined.

The patch from Mail Pourri works on 5.3.0 (I haven't tested in 5.3.1)


[2009-09-14 08:59:36] j...@php.net

The latest patch for this:

  http://www.php.net/~wez/lfs.diff


[2009-07-11 13:40:57] mail dot pourri at laposte dot net

Please see fix in http://bugs.php.net/bug.php?id=48886


[2009-04-30 19:45:57] j...@php.net

And bug #45040




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

https://bugs.php.net/bug.php?id=27792


-- 
Edit this bug report at https://bugs.php.net/bug.php?id=27792edit=1


Bug #27792 [Com]: [PATCH] Functions fail on large files (filesize,is_file,is_dir,readdir)

2011-01-04 Thread marcb at voicemeup dot com
Edit report at http://bugs.php.net/bug.php?id=27792edit=1

 ID: 27792
 Comment by: marcb at voicemeup dot com
 Reported by:kode at kodekrash dot com
 Summary:[PATCH] Functions fail on large files
 (filesize,is_file,is_dir,readdir)
 Status: Critical
 Type:   Bug
 Package:Filesystem function related
 Operating System:   * (LFS)
 PHP Version:5.*, 6CVS (2009-04-30)
 Block user comment: N
 Private report: N

 New Comment:

Is anyone able to confirm if this was fixed in any of the 5.X branch ?



This is a pretty stupid problem to have to deal with !


Previous Comments:

[2009-11-12 10:27:45] boite dot pour dot spam at gmail dot com

The patch from Wez doesn't work, as it assumes size_t are 64 bits, which
is not the case, even when LFS is defined.



The patch from Mail Pourri works on 5.3.0 (I haven't tested in 5.3.1)


[2009-09-14 08:59:36] j...@php.net

The latest patch for this:



  http://www.php.net/~wez/lfs.diff


[2009-07-11 13:40:57] mail dot pourri at laposte dot net

Please see fix in http://bugs.php.net/bug.php?id=48886


[2009-04-30 19:45:57] j...@php.net

And bug #45040


[2009-04-30 19:45:19] j...@php.net

See also bug #48099 (NFS mounts misbehave also without the compile 

flags..)






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/bug.php?id=27792


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