2009-06-24 54 views
2

我在apache2服務器上的許多域上運行相同的php腳本。只有部分文件在不同域之間發生變化,其餘部分始終保持不變。現在,每次我建立一個新域名時,我都會複製所有文件,但我真的希望將這些常用文件放在一個位置,以便任何更改都會影響到所有域。在網絡服務器上設置共享php腳本文件的最佳方式是什麼?

我想過使用一堆符號鏈接來指向通用文件。這是一個好方法,還是有一些簡單的編輯,我可以使PHP腳本或Apache配置文件,使其更有效?

謝謝!

回答

2

我建議將通用代碼抽象爲一組'庫'腳本。將這些放置在一個公共目錄中,並通過修改PHP的include_path變量使其可用。這意味着你很可能不需要修改你當前的腳本,同時仍然不需要擁有多個副本。

此路徑可能(也可能應該)在您的公共目錄之外。這樣可以提高網站的安全性,而不會讓它們直接提供給外部用戶。

1

這可能有點棘手,因爲應用程序幾乎需要知道你正在做這件事。 IME,當您可以將應用程序分成兩個獨立的目錄樹中的通用代碼和實例代碼時,它效果最佳。通用代碼也不需要做任何事情,比如包含必須位於實例樹中的文件。

加載公共代碼的單一入口點也是一個很大的好處,因爲這樣你就可以鏈接幾個非常小的文件:實例代碼在其自己的目錄中包含一個文件;該文件包含實例代碼之外的文件; 文件然後加載公共代碼的入口點文件,或加載另一個文件。現在這只是一種方法,但這意味着你只需要一個文件,該文件需要知道公共代碼的位置(因此如果必須儘可能以最小的努力就可以移動它),並且如果你做得很對,所有各種實例代碼樹都會加載它,儘管是間接的。

3

我這樣做的方式是創建一個「公共」目錄,在該目錄中放置可在每個站點之間共享的所有文件。然後,只需將它們包含在需要的地方。

這很不錯,因爲它允許跨多個站點添加功能。

+0

是不是有一個PHP的安全設置,您必須改變,以允許包括跨域? – 2009-06-24 15:36:47

1

您可以擁有一個位於所有站點之上的庫目錄,以及一個指定默認情況下應包含哪些庫文件的配置文件。然後,您可以在每個站點中擁有覆蓋全局配置的另一個配置文件。這些配置文件可用於生成include('../../ lib/*。php')語句以構建每個站點所需的基本功能工具包。

some_high_level_directory/ 
-> lib/ 
    ->*.php (library files) 
-> config.php (global library includes) 
-> site_1/ 
    -> config.php (library includes that only relate to site_1) 
    -> www/ 
-> site_2/ 
    -> config.php (library includes that only relate to site_2) 
    -> www/ 
-> etc, etc 

希望這是有道理的... :)

相關問題