FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » Headers in fpassthru() output
Show: Today's Messages :: Polls :: Message Navigator
Return to the default flat view Create a new topic Submit Reply
Re: Headers in fpassthru() output [message #176936 is a reply to message #176934] Tue, 07 February 2012 08:48 Go to previous messageGo to previous message
M. Strobel is currently offline  M. Strobel
Messages: 386
Registered: December 2011
Karma:
Senior Member
Am 07.02.2012 03:40, schrieb Michael T. Davis:
> So far, I've tested a call to fopen followed by a call to fpassthru
> on a remote (http://...) JPEG file with PHP v4.4.7 in the "OSU Web Server"
> running under OpenVMS V8.3 on an Alpha, and with PHP v5.3.4 in Apache v2.2.17
> running under Mac OS X v10.6.8. The JPEG file is served by a Webcam. The
> documentation (on php.net) for "http://" says the stream opened by fopen only
> provides access to the body of the response. Why is it, then, that when I
> call on fpassthru for the (JPEG URL) stream, I see the headers included in the
> data returned?
>
> The code looks basically like this:
>
> $image = fopen ( "http://...jpg", "r" );
> foreach ( $http_response_header as $header )
> {
> echo "{$header}\r\n";
> }
> echo "\r\n";
> fpassthru ( $image );
> fclose ( $image );
>
> With the above, the headers are clearly visible at the beginning of the data,
> rendering a lot of meaningless code in the browser window, rather than an
> actual image. One work-around I've developed is...
>
> $image = fopen ( "http://...jpg", "r" );
> $inHeaders = 1;
> while ( $inHeaders && ! feof ( $image ) )
> {
> $line = fgets ( $image );
> echo $line;
> $inHeaders = ( $line != "\r\n" );
> }
> if ( ! feof ( $image ) )
> fpassthru ( $image );
> fclose ( $image );
>
> Can anyone explain why I'm seeing behavior counter to the documentation with
> "fopen ( 'http://...' )" and "fpassthru (...)"? (FWIW, the purpose of the
> code is to "proxy" a Webcam image that isn't directly available, so that as
> far as the browser is concerned, the image is served by the web server
> hosting this PHP code.)
>
> Thanks,
> Mike

I can't confirm the problem - no headers here:

strobel@s114-intel:~> php -a
Interactive shell

php > $h = fopen('http://php.net','r');
php > fpassthru ($h);
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>PHP: Hypertext Preprocessor</title>
....

Tested on an ubuntu 10.04 server.

/Str.
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Re: Tips to find Technical Co-founder / Tech lead
Next Topic: 6 line php 2 asp
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Mon Nov 25 01:37:59 GMT 2024

Total time taken to generate the page: 0.04601 seconds