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