Edit report at https://bugs.php.net/bug.php?id=65445&edit=1

 ID:                 65445
 Updated by:         johan...@php.net
 Reported by:        michal at michal dot waw dot pl
 Summary:            filesize() fails for files with high inode number
-Status:             Open
+Status:             Feedback
 Type:               Bug
 Package:            Filesystem function related
 Operating System:   Linux
 PHP Version:        5.5.1
 Block user comment: N
 Private report:     N

 New Comment:

Are you using a 32 or 64 it system?
Could you please run the following on command line to see whether the syscall 
for stat succeeds or fails so we can narrow the search:

$ strace php -nr 'filesize("DSC_5196_fx-1553725666.JPG");'

The relevant output is towards the end something like

stat("DSC_5196_fx-1553725666.JPG", 0x7fff38d27f80) = -1 ENOENT (No such file or 
directory)
write(1, "\nWarning: filesize(): stat faile"..., 96

or

stat("DSC_5196_fx-1553725666.JPG", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0

thanks.


Previous Comments:
------------------------------------------------------------------------
[2013-08-13 20:27:21] michal at michal dot waw dot pl

Description:
------------
I have a file for which filesize() can't return value. "stat" result for this 
file:

Original file:
  File: 'DSC_5196_fx-1553725666.JPG'
  Size: 1907383         Blocks: 3728       IO Block: 4096   regular file
Device: 803h/2051d      Inode: 5905591363  Links: 1
Access: (0644/-rw-r--r--)  Uid: (   51/    http)   Gid: (   51/    http)
Access: 2013-08-13 00:47:28.107477918 +0200
Modify: 2013-08-12 21:38:27.219913208 +0200
Change: 2013-08-13 00:47:08.931478654 +0200
 Birth: -

I've made an exact copy, in same dir, same permissions:

Copy:
  File: 'DSC_5196_fx-1553725666_X.JPG'
  Size: 1907383         Blocks: 3728       IO Block: 4096   regular file
Device: 803h/2051d      Inode: 144         Links: 1
Access: (0644/-rw-r--r--)  Uid: (   51/    http)   Gid: (   51/    http)
Access: 2013-08-13 00:45:48.000000000 +0200
Modify: 2013-08-12 21:38:27.000000000 +0200
Change: 2013-08-13 00:47:28.199477914 +0200
 Birth: -

filesize() works for this new file.

I can't find any other difference between these two files.

I checked that filesize() works for files with inode number less or equal to 
4126207367and doesn't work for files with inode number equal or greater than 
4358705632. I didn't find files with inode number in between but I'm still 
looking.

To me it seems that filesize() has problem with inode number higher than 2^32.

Test script:
---------------
<html>
<body>
<pre>
<?

$f1 = 
'/home/services/httpd/html.galeria.michal.waw.pl/gallery/var/albums/988_Rok-2013/Sobota/DSC_5196_fx-1553725666.JPG';
$f2 = 
'/home/services/httpd/html.galeria.michal.waw.pl/gallery/var/albums/988_Rok-2013/Sobota/DSC_5196_fx-1553725666_X.JPG';

print $f1.": ".filesize($f1)."\n";
print $f2.": ".filesize($f2)."\n";

?>
</pre>
</body>
</html>

Expected result:
----------------
I expected to see sizes of both files.

Actual result:
--------------
Warning: filesize(): stat failed for 
/home/services/httpd/html.galeria.XXX/gallery/var/albums/988_Rok-2013/333_Rydzewo-04-06.08.2013/Sobota/DSC_5196_fx-1553725666.JPG
 in /home/services/httpd/html.galeria.michal.waw.pl/gallery3-3.0.x/test.php on 
line 13
/home/services/httpd/html.galeria.XXX/gallery/var/albums/988_Rok-2013/333_Rydzewo-04-06.08.2013/Sobota/DSC_5196_fx-1553725666.JPG:
 
/home/services/httpd/html.galeria.XXX/gallery/var/albums/988_Rok-2013/333_Rydzewo-04-06.08.2013/Sobota/DSC_5196_fx-1553725666_X.JPG:
 1907383


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



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

Reply via email to