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