2012-05-25 70 views
5

我想有一個常量(字符串)常量,可用於服務器上所有PHP的腳本。PHP:可以設置默認的php.ini文件

根據http://php.net/manual/en/function.parse-ini-file.php這是,如果你解析一個額外的.ini文件很容易,但我不想來解析一個額外的文件,我想設置我不斷在全球的php.ini而不必解析任何東西腳本。 (事實上​​,這是整個觀點,因爲我需要常量來查找包含/解析/等等的東西:當我知道這個額外的.ini文件會在什麼地方時,我不再需要它了!)

Just invening一個新的常量在php.ini中,然後試圖通過ini_get()訪問它不起作用,有沒有其他方法?

我編譯Apache和PHP自己,所以我也可以在編譯時設定參數和/或使用Apache的常量,如果這是neccessary。

回答

7

您可以使用PHP auto_prepend_file腳本在你的PHP INI要做到這一點,因爲它會之前的任何用戶,土地腳本來運行:

指定之前自動解析的文件名主文件爲 。包含該文件就好像使用require 函數調用它一樣,因此使用include_path。在/home/user/script.php

auto_prepend_file="/home/user/script.php" 

的:

所以,你可以添加像一個ini線

define('CONSTANT_NAME', 'your nice value here'); 

現在,在你的PHP腳本,你可以從訪問CONSTANT_NAME無論你喜歡什麼,因爲它在所有PHP腳本中都可用。

我用這個技術,它使用了mod_rewrite的羣衆基礎的虛擬主機,所以我可以給我的PHP腳本精確的文檔根目錄我的臨時服務器上。我已經在blog post before中討論過這個問題。

+0

不是我想要的,但它的工作原理,謝謝。 – Robby75

+0

不幸的是,它和你要得到的一樣接近。你想要的是實際上不可能): – Treffynnon

0

從你說什麼,我想你會發現,有將已經類似於$_SERVER已有的東西,特別是「DOCUMENT_ROOT」。

+0

沒錯,我需要非常相似DOCUMENT_ROOT東西(但不DOCUMENT_ROOT,這是這個問題的整點) – Robby75

+0

@ Robby75這正是我用我的答案的解決方案來實現在我的登臺服務器上:http://stackoverflow.com/a/10751734/461813 – Treffynnon

0

簡單。創建一個文件xxx.php,在其中定義常量並將該文件添加到php.ini中的全局include_path。我想補充一點,保持這種全局常量或變量不是一種推薦的工作方式,因爲您可能會忘記常量來自哪裏,並且不會讓您的應用程序變得非常便於攜帶並且對其他開發人員更加明確。