2008-08-23 75 views
18

我可以設置PHP包括在php.ini路徑:設置PHP包含每個站點的路徑?

include_path = /path/to/site/includes/ 

但隨後其他網站受到影響,這樣是不行的。

我可以設置PHP包括在每一個文件的開頭:

$path = '/path/to/site/includes/'; 
set_include_path(get_include_path() . PATH_SEPARATOR . $path); 

但是,這似乎是不好的做法和雜波的事情了。

所以我可以做的包括的是,然後包含到每一個文件:

include 'includes/config.php'; 

include '../includes/config.php'; 

這是我現在在做,但包含的路徑config.php將根據包含它的內容而改變。

有沒有更好的方法?有關係嗎?

回答

16

如果您使用apache作爲網絡服務器,您可以使用.htaccess文件覆蓋(如果允許)設置。詳情請參閱the PHP manual

基本上你把一個名爲.htaccess的文件放在你的網站根目錄下,其中包含一些PHP ini值。如果您配置了Apache以允許覆蓋,則該站點將使用您的PHP配置中的所有值,+您在.htaccess文件中指定的值。

只能用PHP_INI_ALLPHP_INI_PERDIR類型的指令

在我的鏈接頁面聲明中使用。如果點擊完整列表,則會看到包含路徑是PHP_INI_ALL指令。

0

你也可以在你的php.ini文件中設置include_path。我是一個perl的傢伙,所以我期望能夠加載包括並有正確的事情。我已將所有包含在特定目錄中,並將其添加到include_path。我可以做類似

require_once "ClassName.php"; 

我不需要擔心文件的相對路徑或位置。

我也寫我自己的CustomRequire做事喜歡

function CustomRequire ($file) { 
    if(defined('MYINCLUDEPATH')) { 
     require_once MYINCLUDEPATH . "/$file"; 
    } else { 
     require_once $file; 
    } 
} 

這樣我可以改變我怎樣將包括在以後的日子。當然,您仍然需要找到一種方法來包含您的包含代碼:)

+0

爲什麼人們瞧不起@ Gary的答案嗎?在我看來,這是一個糟糕的做法 - 在評論部分沒有解釋它的情況下,將評論從「無盡的智慧」中撤下。 – amn 2012-09-10 14:53:01

+0

梅。這是你的PHP。我仍然在使用這個系統,並且它非常適合APC性能。如果可以,請使用自動加載器。自動加載器的問題在於,如果你想要在文件系統上有類結構(例如http://www.php.net/manual/en/language),那麼你必須要混雜你的類名稱。 oop5.autoload.php#49496)。我很樂意聽到更好的選擇! – 2012-09-11 15:47:32

+0

加里,我只是指出人們如何傾向於在沒有評論的情況下倒下東西。就我而言,你的答案是合理的。 – amn 2012-09-12 12:07:37

1

根據主機的設置方式,您可能會被允許將php.ini文件放置在您的主目錄的根目錄中,並帶有額外的配置指令。

7

埃裏克範布拉克爾,恕我直言,最好的答案之一。,

更多,如果你使用Apache &虛擬主機,你可以設置直接包括在其中。使用這種方法,你不必記住在你的.htaccess中留下php_admin命令。

4

如果你的安裝使用PHP作爲CGI(共享主機中最常見的情況)與相同的語法服務器範圍的php.ini使用在網站根目錄的php.ini文件;放入的.htaccess如果你有PHP作爲Apache模塊(做的phpinfo()如果不確定):

php_value include_path中「何」

注意,每個文件夾的php.ini不影響子文件夾。

1

您的應用程序應該有PHP編寫的配置文件。然後在程序的每個頁面中加入相關頁面。那配置文件將有到包括目錄,模板目錄,圖片目錄的路徑的變量等

3

爲什麼你認爲追加到包括路徑是不好的做法?

根附近腳本的頂部這段代碼不應該是壞...

$path = '/path/to/site/includes/'; 
set_include_path($path . PATH_SEPARATOR . get_include_path()); 

恕我直言,主要優點是它的便攜和兼容,不僅與Apache

編輯:我看到了一個這種方法的缺點:性能影響小。看到http://www.geeksengine.com/article/php-include-path.html