2010-09-02 116 views
0

如何在PHP文件中包含外部类? 示例:包含外部类php

//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"); 
?> 

该类在另一个服务器上。我已启用allow_url_includeallow_url_fopen。 为什么我不能调用函数print

+0

你得到了什么错误信息?另外,远程包含文件并不是一个好主意,为什么不在本地下载版本并使用它(我无法看到'include'或任何类似的东西)。此外,请尝试重新格式化问题以使其可读。 – aularon 2010-09-02 21:23:35

回答

2

远程文件必须输出php源代码,而不是执行它。

要输出PHP代码而不是执行,只需从文件中删除.php扩展名即可。

PS:你真的真的确定你需要远程包含吗?这是一个BIG安全风险!

+0

我建议你使用xml-rpc,soap,rest ...类似的东西。 – 2010-09-03 03:20:40

0

从其他服务器包含的内容不是PHP背后的代码,而是其输出(如果您在浏览器中访问该页面,如果您查看源代码时没有看到PHP代码?)

您可能需要重新配置其他服务器不执行代码,但显示它(如果以任何方式共享或需要执行它自己的代码,这不是一个好主意),或者将其他文件重命名为“ t个第一interpretted(试行otherfile.php.txt

+0

它的工作原理。我将.php文件重命名为.txt,这只是一个实验。我知道是一个安全风险。 谢谢alls。 – G0z 2010-09-02 21:36:08

0

看一看的documentation

(...)如果目标服务器将目标文件解释为PHP代码,则可以使用与HTTP GET一起使用的URL请求字符串将变量传递到包含的文件。这与严格意义上讲并不是一样的,包括文件并让它继承父文件的变量作用域;该脚本实际上正在远程服务器上运行,结果被包含在本地脚本中。

可能是您试图从中获取文件的服务器执行PHP文件,并且只包含结果(它是空的)。您将不得不以配置服务器的方式输出PHP代码。但如果它是明智的代码,这不是一个好主意。