#48959 [Fbk->Opn]: is_readable() and filezise() do not return correctly
ID: 48959
User updated by: trutas dot ctx at gmail dot com
Reported By: trutas dot ctx at gmail dot com
-Status: Feedback
+Status: Open
Bug Type: Filesystem function related
Operating System: win32 - Windows Server 2003 x64
PHP Version: 5.3.0
Assigned To: pajoye
New Comment:
The environment could be the problem here,
I'm using Windows 2003 x64 with PHP x64 via fastcgi.
These are two IIS Servers with load balancer and a separate cluster
that serves the actual run files.
PHP is installed on D:\PHP on each IIS machine.
The problem came up using the library dompdf - it saves document
images content to temporary files in order to build the final pdf
document.
I've reduced the problem to the test code i've attached.
DOMPDF_TEMP_DIR is /tmp and writes to C:\Windows\tmp ...
- Please note that this problem does not happen in local folder to the
execution base (eg. "tmp_sub_folder/" ) - this only happens in the
system tmp folder in this setup.
This is the same setup environment as the one reported in the bug
48852 (about file_put_contents)
Regards,
Previous Comments:
------------------------------------------------------------------------
[2009-07-17 15:34:47] pajoye@php.net
Cannot reproduce on 2k8, vista and win7. Pls note that I replaced the
my_file_... with the normal file_get_contents function.
Can you paste a working script pls?
------------------------------------------------------------------------
[2009-07-17 15:08:28] trutas dot ctx at gmail dot com
Just tested - file_exists() returns false incorrectly too.
I´ve worked around it all with checking for fopen($file, 'r') and
forcing file_get_contents() - it works, file exists, is readable and
returns the content.
------------------------------------------------------------------------
[2009-07-17 12:10:10] trutas dot ctx at gmail dot com
Description:
------------
is_readable() returns false for temporary file (just created)
"C:\WINDOWS\Temp\dom373.tmp" and filezise() fails too.
fopen() and get_file_contents() both work for the same file.
as a workaround i'm using fopen() instead of is_readable() and
fseek($fopen_instance, 0, SEEK_END); instead of filesize()
Reproduce code:
---------------
//temporary location
$resolved_url = tempnam(DOMPDF_TEMP_DIR, "dompdf_img_");
//get source
$image=my_file_get_contents("http://9tree.net/favicon.ico");
//save it
file_put_contents($resolved_url, $image);
//tests
if(is_readable($resolved_url)) print "file readable, ";
if(filesize($resolved_url)) print "filezise found.\n";
die("all done.");
Expected result:
----------------
file readable, filezise found.
all done.
Actual result:
--------------
all done.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=48959&edit=1
Thread (9 messages)