2011-09-01 59 views
-3

我試圖在PHP中構建一個應用程序來幫助我配置新網站。從單一代碼源複製網站的PHP應用程序

新網站將始終基於特定的「代碼庫」,其中包含所有必需的網絡文件。 我希望我的PHP腳本將這些網絡文件從一個域的網絡空間複製到另一個域的網絡空間。 當我點擊一個按鈕時,一個空白的網頁空間會填充來自另一個域的文件。 這兩個域都在同一臺Linux/Apache服務器上。

作爲一個實驗,我嘗試在PHP中使用shell和exec命令來執行「root」操作。 (我知道這可以打開主要的安全漏洞,所以這不是我的理想方法。) 但我仍然有類似的權限問題,並且無法使該方法也能正常工作。

但是,當跨域複製時,我遇到了權限/所有權問題。 也許一個CGI腳本是一個更好的主意,但我不知道如何處理它。

任何意見表示讚賞。 或者,如果您知道這類信息的更好資源,請指向我。 我確信這種「網站設置」應用程序之前已經建立。

謝謝!

+0

你知道有些工具可以爲你做到這一點。 – Layke

+0

我有一個模糊的想法,可能有工具。 有什麼具體的建議? – showdev

回答

0

我也在做這樣的事情。唯一的區別是我沒有製作核心文件的副本。系統有一個核心,只有特定的文件被複制。

,如果你想,然後將文件複製你必須要考慮到以下幾點:

  1. 一個簡單的(不太安全的方式)是使用相同的用戶所有網站

  2. 否則(如果你想提供不同的訪問) - 你必須爲每個網站創建一個不同的所有者。您必須爲複製的文件設置所有者/組(這將由root來完成)。

  3. 爲新的網站設置: 主域名將作爲根運行,然後它將能夠執行一個新的網站創建,或者如果你不希望你的主域名是根,你可以做以下: 創建一個cronjob(或在CLI下循環運行的php腳本),它將由root執行。它會每隔2分鐘檢查一次數據庫記錄,例如,您可以從主域添加一個記錄,其中包含新託管網站的設置信息(或者只執行一些獲得root訪問權限的腳本,並且不執行cron)。

  4. 創建此腳本可以在PHP中完成。它可以用你希望的任何語言來完成,只要它獲得正確的訪問權限,它並不重要。

在我的情況下,我使用同一個用戶,因爲他們都是我的網站。缺點是操作系統不會創建限制,我的PHP代碼將(我失去了不同網站之間用戶/組權限的優勢)。

注意open_basedir可能會導致一些麻煩,請確保排除正確路徑(或禁用它)。

此外,fastCGI和suPHP之間還存在一些細微差異(我相信這不會造成太大麻煩)。

+0

感謝您的信息,galchen。我確實需要每個域的不同用戶。我喜歡你的想法,即執行一個獲得root訪問權限的PHP腳本。我認爲suPHP有助於這一點,對嗎?我會研究它。是的,我注意到了open_base_dir限制,併爲vhost.conf文件添加了適當的路徑。再次感謝您的詳細回覆! – showdev