Bug #22730 [Com]: fopen/fsockopen opens local file instead of doing a HTTP request
| From: | lildurk22730 at gmail dot com | Date: | Wed, 01 Sep 2021 18:45:14 +0000 |
| Subject: | Bug #22730 [Com]: fopen/fsockopen opens local file instead of doing a HTTP request | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-236283@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=22730&edit=1
ID: 22730
Comment by: lildurk22730 at gmail dot com
Reported by: web at affenkrieger dot de
Summary: fopen/fsockopen opens local file instead of doing a
HTTP request
Status: Not a bug
Type: Bug
Package: Network related
Operating System: Windows 2000
PHP Version: 4.3.1
Block user comment: N
Private report: N
New Comment:
Lil Durk is a private agency dedicated to providing responsible access to legal cannabis for adults
aged 19 and older. Weâre an exclusively online retailer and wholesaler for recreational
cannabis and a trusted source for information about cannabis and cannabis-related issues. We believe
our work is meaningful and we take pride in our mandate to promote the socially responsible use of
legal cannabis. https://lildurk.com/
Previous Comments:
------------------------------------------------------------------------
[2003-03-15 23:08:28] sniper@php.net
Support questions elsewhere, thank you.
------------------------------------------------------------------------
[2003-03-15 20:38:34] pollita@php.net
My *guess* is that you have apache configured to handle .html files through PHP. When you request
'404.html' apache passes the request to the PHP engine (a second instance, not the
instance which issued the request) which attempts to open the file specified via apache and
subsequently doesn't find it.
Consider this.... what happens when you open a normal webbrowser (one your local box) and browse http://localhost/404.html ?
------------------------------------------------------------------------
[2003-03-15 11:55:12] web at affenkrieger dot de
I'm runnin' a local Apache webserver 1.3.27 on my win2000 machine. PHP 4.3.1 is included
as a CGI.
When i'm trying to access a non-existing file on my local Apache, PHP tries to access it as a
local file and isn't doin a HTTP request as it should do.
Examples:
<?php
fopen("http://localhost/404.html",
"r");
?>
PHP throws this msg into the error_log of Apache:
> PHP Fatal error: Unknown(): Unable to open
> X:\webroot\404.html in Unknown on line 0
.. but no info to STDOUT
Doing
<?php
fopen("http://www.gmx.de/blabla.html", "r");
?>
Just works as expected:
> PHP Warning: fopen(http://www.gmx.de/blabla.html)
> failed to create stream: HTTP request failed!
> HTTP/1.1 404 Not Found
But it becomes more curious. Doing a HTTP request on my own with fsockopen results in the same error
as above!
<?php
$fp = fsockopen ("localhost", 80, $errno, $errstr, 5);
if(!$fp)
{ die($errstr);}
$header_done=false;
$request = "GET /404.html HTTP/1.0\r\n";
$request .= "User-Agent: PHP 4.3.1\r\n";
$request .= "Host: localhost\r\n";
$request .= "Connection: Close\r\n\r\n";
$return = '';
fputs ($fp, $request);
$line = fgets ($fp, 512);
$this->header["status"] = $line;
while (!feof($fp))
{
if($header_done)
{
$line = fread ( $fp, 1024 );
$this->content .= $line;
}
else
{
$line = fgets ($fp, 128);
if($line == "\r\n")
{ $header_done=true;}
else
{
$data = explode(":",$line);
$this->header[$data[0]] = trim($data[1]);
}
}
}
fclose ($fp);
?>
I am sending a HTTP GET-request to localhost to get the non-existing file, but the answer of the
Apache is "200 OK"! And then the same log entry as with fopen():
> PHP Fatal error: Unknown(): Unable to open
> X:\webroot\404.html in Unknown on line 0
Why does PHP wants to open a local file, even if i'm doing a HTTP request manually ?
The same script works with an other host as expected, too.
Regards,
Nils.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=22730&edit=1