2011-08-11 28 views
0

我怎樣才能從我的父域引入一個類文件以用於我的服務器上的子域?從父域使用外部類文件到子域

例如,我有一個類文件處理用戶身份驗證以及一些重要的方法。我如何在子域上使用該認證類?

我的文件夾結構

父域

/home/<domain>/public_html/ 

子域

/home/<domain>/public_html/users/cluster_1/<sub> 

當我提出一個新的子域我有被複制到

模板的index.php
/home/<domain>/public_html/users/cluster_1/<sub>/index.php 

在index.php我想包括我的認證類,以便我可以做更多的東西根據其方法返回的數據。

我知道我不能包含http請求,也不想使用dirname(dirname(__FILE__),因爲如果用戶改變他們可以看到域的服務器文件夾結構。

我嘗試過的的fopen,但我不能得到這包括我的課,也是我試過這樣

function get_data($url) { 
    $ch = curl_init(); 
    $timeout = 5; 
    curl_setopt($ch,CURLOPT_URL,$url); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    return $data; 
} 
$returned_content = get_data('http://domain.com/api/ApiClient.php'); 

捲曲有一種優雅的方式,包括我ApiClient.php類文件,甚至如果用戶更改PHP代碼,他們不會看到PHP錯誤引發的文件夾結構信息。

回答

0

對不起,不,不是。

雖然它實際上有可能通過HTTP下載PHP代碼,並且它在本地運行,這是強烈因爲安全隱患的勸阻:一個小蟲子在包括系統或在代碼服務器的一個小錯誤,突然間你從一個未經檢查的源代碼運行惡意代碼。他們默認禁用該行爲的原因很有道理。

如果您的用戶可以編輯並運行他們自己的(未經檢查的)PHP代碼,那麼對您的用戶看到您的目錄結構猶豫不決是沒有意義的:除非您確保安裝(聽起來不像),否則他們可以找到現在這個結構。只需使用適當的函數來遍歷目錄即可。

我只是使用直接包含方法。

require MAIN_CLASS_PATH . '/api/ApiClient.php'; 

如果你真的希望他們不知道父域:

  • 移動共享類到一個單獨的項目,從而單獨的目錄(比如/家庭/ $ USER /共享/ API
  • 通過設置PHP的open_basedir的和禁用象exec功能安全的子域()(它可以用來規避的open_basedir)
  • 從/家/ $ USER /共享/來自父域和子域的API包括。
+0

雅我想通了。在我的存根(stubbor)中,我創建了一個隱藏的目錄,並在其中放置了一個類文件的副本,並使用htaccess規則鎖定。 – Eli