Rasmus Lerdorf wrote:
> On Mon, 1 Dec 2003, Sophie Mattoug wrote:
>> Victor Spång Arthursson wrote:
>> 
>>> Hi!
>>> 
>>> I'm having a problem with including files. What I want to achieve is
>>> to execute a PHP-script on another server, and then to include the
>>> result (which will be XML-output) in another PHP-script (currently
>>> on my local computer). 
>>> 
>>> On the server I have the file
> http://server.com/test/echo.php with
>>> the content
>>> 
>>> ---
>>> <?php
>>> echo 'xyz';
>>>> 
>>> ---
>>> 
>>> Locally I've a file with the following content:
>>> 
>>> ---
>>> <?php
>>> echo "!!!";
>>> include ("http://server.com/test/echo.php";);
>>> echo "???";
>>>> 
>>> ---
>>> 
>>> I was expecting the output from my locally testfile to be something
>>> like: 
>>> 
>>> ---
>>> !!!???
>>> ---
>>> 
>>> but rather it is
>>> 
>>> ---
>>> !!!xyz???
>>> ---
>>> 
>>> I've also tried with a $fp = readfile("http…") with the same result,
>>> which is output of the echo-statement in the remote file which I am
>>> expecting to be evaluated remotely.
>>> 
>>> How can I do to include the PHP-script and have it to be ran before
>>> it is included? 
>>> 
>>> Sincerely
>>> 
>>> Victor
>> 
>> 
>> This is a perfectly normal behaviour ! See www.php.net/include to
>> understand what this function does. (comparing to
>> www.php.net/require) 
> 
> It's perfectly normal, yes, but it has nothing to do with include vs.
> require. 
> 
> I guess I don't really understand the question.  I assume you
> realize that an include 'http://server.com/file.php' is going
> to send an HTTP request to server.com asking for file.php and
> if server.com is configured to execute php for file.php then
> what will come back across the wire is the result of php
> running the script in file.php.  As such, when you do:
> 
>  echo '!!!';
>  include 'http://server.com/file.php';
>  echo '???';
> 
> you will of course see: !!!xyz??? because that is exactly
> what you have asked it to do.  Print !!!, then send an HTTP
> request to server.com and include the output of that script
> right here, and finally print out ???.
> So I don't understand why this output is surprising you and I
> don't understand your question about expecting it to be
> evaluated remotely.
> file.php was of course evaluated remotely on server.com.  If
> file.php had written something to the filesysts, for example,
> then that something would be on server.com not on your server.
> 
> -Rasmus

You can use the output buffer functions to catch the "xyz" into a var:

<?php
print "!!!";
ob_start();
include 'http://server.com/test/echo.php';
$XML = ob_get_clean(); // or use ob_get_contents(); and ob_end_clean() for
PHP < 4.3
print "???";

print '[Between this you'll get your XYZ]';
print $XML;
print '[Between this you'll get your XYZ]';
?>

Hope it helps ya,
Wouter

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to