views:

87

answers:

3

How can include a external class in a php file? example:

//Test.class.php

<?php 
class Test{
    function print($param){
        echo $param;
        }
    }
?>

//######################################################

//test.php
<?php
include('http://www.test.com/Test.class.php');

 $obj = new Test();

echo $obj->print("hola");
?>

The class is on another server. I have enabled the allow_url_include and allow_url_fopen. Why can't I call the function print?

+1  A: 

The remote file must output the php source code, not execute it.

To output the PHP code instead of executing you could simply remove the .php extension from the file.

PS: Are you really, really, really sure you need remote inclusion? It's a BIG security risk!

nikic
I recommend you use xml-rpc, soap, rest... something like it.
Felipe Cardoso Martins
A: 

What you're including from the other server isn't the code behind the PHP but the output from it (if you visit that page in a browser you aren't seeing the PHP code if you view source right?)

You either need to reconfigure the other server not to execute the code but display it (not a good idea if it's in any way shared or needs to execute it's own code), or rename the other file to something that isn't first interpretted (try otherfile.php.txt)

Rudu
it`s works. I rename the file from .php to .txt this is just a experiment. I know is a security risk.thanks alls.
G0z
A: 

Have a look at the documentation:

(...) If the target server interprets the target file as PHP code, variables may be passed to the included file using a URL request string as used with HTTP GET. This is not strictly speaking the same thing as including the file and having it inherit the parent file's variable scope; the script is actually being run on the remote server and the result is then being included into the local script.

Probably the server, you are trying to get the file from, executes the PHP file and only the result (which is empty) is included. You would have to configure the server in such a way that it outputs the PHP code. But this is not a good idea if it is sensible code.

Felix Kling