Re: include-problem
| From: | Rasmus Lerdorf | Date: | Mon, 01 Dec 2003 11:49:36 +0000 |
| Subject: | Re: include-problem | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-171453@lists.php.net to get a copy of this message | ||
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