2010-09-02 148 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代碼。但如果它是明智的代碼,這不是一個好主意。