ID:               38826
 User updated by:  [EMAIL PROTECTED]
 Reported By:      [EMAIL PROTECTED]
-Status:           Feedback
+Status:           Open
 Bug Type:         Streams related
 Operating System: WinXP
 PHP Version:      5.1.6
 New Comment:

Sorry, I didn't mean to be rude with "not sure how seriously" - it
looked like a boilerplate text and I thought it might be an automated
response. And because it was just the size of the file that mattered I
didn't think to put a copy of it in the defect; but I should have made
that clearer.

Anyway, I am baffled. When I use file_get_contents to go for your file
remotely it works fine, but if I put your file on my machine and go for
it with localhost it goes wrong. I am running Apache/2.0.59 (Win32)
PHP/5.1.6, by the way. 

I have got two files, one with 255 a's and one with 256 - which is the
file that you put up. CURL gets correct contents and byte counts,
file_get_contents does not. The Apache access log claims it is
returning 255 and 256 bytes each time, though.

I am running it with CLI.

Here is my test now, comparing CURL with file_get_contents:

<?php

$buf = file_get_contents('http://localhost/255as.file');
echo strlen($buf) . "\n";

$buf = file_get_contents('http://localhost/256as.file');
echo strlen($buf) . "\n";

$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL,'http://localhost/255as.file');
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,true);
$buf = curl_exec($curl_handle);
curl_close($curl_handle);
echo strlen($buf) . "\n";

$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL,'http://localhost/256as.file');
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,true);
$buf = curl_exec($curl_handle);
curl_close($curl_handle);
echo strlen($buf) . "\n";

?>

It relies on the two files 255as.file and 256as.file being in the local
server's docroot.

The output I get is:

255
0
255
256

The Apache access log says:

127.0.0.1 - - [14/Sep/2006:17:43:31 +0100] "GET
/MyService/AddressBook/255as.file HTTP/1.0" 200 255
127.0.0.1 - - [14/Sep/2006:17:43:31 +0100] "GET
/MyService/AddressBook/256as.file HTTP/1.0" 200 256
127.0.0.1 - - [14/Sep/2006:17:43:32 +0100] "GET
/MyService/AddressBook/255as.file HTTP/1.1" 200 255
127.0.0.1 - - [14/Sep/2006:17:43:32 +0100] "GET
/MyService/AddressBook/256as.file HTTP/1.1" 200 256

If you were able to point me to the right routine in PHP I could add a
bit of diagnostic code and rebuild...or if I can help in any other way.


My colleague, who has a very similar set up (but running 5.1.4) sees
the same thing on her machine, completely independent of mine, by the
way.


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

[2006-09-14 12:49:15] [EMAIL PROTECTED]

>I am not sure how seriously to take the response

Well, I'm not sure either how to take a report with "http://localhost";
as a test data.

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

[2006-09-14 12:48:19] [EMAIL PROTECTED]

Please upload the file somewhere and put the link here.
Make sure you're looking into the source of the page or even better try
it with CLI.
I cannot reproduce anything like that:
var_dump(file_get_contents("http://tony2001.phpclub.net/dev/tmp/info.xsd";));
works like a charm with any PHP version I have here (and I have a lot
of them).

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

[2006-09-14 12:36:15] [EMAIL PROTECTED]

Errr... I am not sure how seriously to take the response "[14 Sep
11:51am UTC] [EMAIL PROTECTED]", but here goes:

1. The reproduce code is:

<?php
echo
file_get_contents('http://localhost/MyService/AddressBook/info.xsd');
?>


2. I do not know how to supply a test script that does not rely on
external resources since this problem occurs reading a URL and almost
by definition a URL is an external resource.

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

[2006-09-14 11:51:33] [EMAIL PROTECTED]

Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves. 

A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external 
resources such as databases, etc. If the script requires a 
database to demonstrate the issue, please make sure it creates 
all necessary tables, stored procedures etc.

Please avoid embedding huge scripts into the report.



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

[2006-09-14 11:47:43] [EMAIL PROTECTED]

Description:
------------
I am using file_get_contents with a URL. If the file I want to get is
255 bytes I get it fine. If it is 256 bytes or more, up to some upper
limit which is somewhere around 3.5K, I get an empty string. 

Although I have only illustrated it with file_get_contents(), from the
circumstances in which I first noticed odd behaviour I think it also
applies generally to files opened with fopen(). 

Incidentally, the right number of bytes are coming from the web server,
as the apache access log shows it is delivering 256 bytes:

127.0.0.1 - - [14/Sep/2006:12:34:37 +0100] "GET
/MyService/AddressBook/info.xsd HTTP/1.0" 200 256

Reproduce code:
---------------
echo
file_get_contents('http://localhost/MyService/AddressBook/info.xsd');

where the target file info.xsd is 256 bytes long




Expected result:
----------------
the contents of the file

Actual result:
--------------
nothing - empty string


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


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

Reply via email to