ID:               22730
 Updated by:       [EMAIL PROTECTED]
 Reported By:      web at affenkrieger dot de
-Status:           Feedback
+Status:           Bogus
 Bug Type:         Network related
 Operating System: Windows 2000
 PHP Version:      4.3.1
 New Comment:

Support questions elsewhere, thank you.



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

[2003-03-15 20:38:34] [EMAIL PROTECTED]

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 http://bugs.php.net/?id=22730&edit=1

Reply via email to