2012-06-01 258 views
22

在Web服務器和CLI版本上運行的php不使用相同的php.ini文件。如果我做一個命令php --ini,它表明這個如何在PHP中更改php.ini的路徑

Configuration File (php.ini) Path: C:\Windows 
Loaded Configuration File:   C:\wamp\bin\php\php5.3.8\php.ini 
Scan for additional .ini files in: (none) 
Additional .ini files parsed:  (none) 

,而我的網頁版本使用的php.ini中C:\wamp\bin\apache\Apache2.2.21\bin\php.ini。這對使用wamp的人來說可能非常普遍。

如何更改加載的配置文件以從C:\wamp\bin\apache\Apache2.2.21\bin\php.ini中讀取,因此我不必維護2個不同的php.ini版本?

回答

15

http://php.net/configuration.file

在這些位置搜索php.ini(按順序):

  • SAPI模塊特定位置(Apache 2中PHPIniDir指令,在CGI和CLI,在NSAPI php_ini參數,PHP_INI_PATH環境變量中THTTPD -c命令行選項)
  • PHPRC環境變量。在PHP 5.2.0之前,這是在下面提到的註冊表鍵後檢查的。
  • 從PHP 5.2.0開始,可以爲不同版本的PHP設置php.ini文件的位置。
    • [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ XYZ],[HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ XY]和[HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ X],其中x,y和z:以下注冊表項,以便檢查意味着PHP主要版本,次要版本和發佈版本。如果在任何這些鍵中有IniFilePath的值,則找到的第一個將用作php.ini的位置(僅限Windows)。
    • [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP],IniFilePath的值(僅限Windows)。
  • 當前工作目錄(CLI除外)。
  • Web服務器的目錄(用於SAPI模塊)或PHP目錄(否則在Windows中)。 Windows目錄(C:\ windows或C:\ winnt)(適用於Windows)或--with-config-file-path編譯時選項。

對於CLI,你最好的選擇可能是要麼設置$PHPRC環境變量將要執行腳本的帳戶,或用不同的--with-config-file-path配置設置重新編譯PHP。

 
> php --help 
Usage: php [options] [-f] [--] [args...] 
... 
    -c | Look for php.ini file in this directory 

+0

因此,這是一臺運行wamp的Windows機器。我如何設置$ PHPRC? – Sufendy

+2

它只是一個環境變量,谷歌'設置環境變量窗口'應該給教程。 – goat

0

嘗試兩側

網絡服務器和CLI運行phpinfo()功能,並找出你的php.ini文件的確切位置兩側

,並保持這些文件只

+2

我已經知道這兩個文件的位置。問題是如何統一它們。 – Sufendy

1

我花了大約3個小時試圖做你的問題問到底是什麼:

您可以通過指定-c選項調用PHP時也覆蓋在每個執行基礎php.ini中搜索目錄。不能這樣做。我放棄並複製了該php。ini到C:\ Windows並將我的ENV變量「PHPRC」更改爲C:\ Windows(並在httpd.conf中)。這樣,我的CLI php和Apach php e都使用相同的文件。我無法得到「php -m」來顯示我已加載到我的php.ini中的模塊,直到我做出此更改...

+0

這是我的關鍵。我實際上刪除了PHPRC環境變量並重新啓動,並且php默認查找與當前工作目錄相同的路徑。謝謝! – AS7K

7

通過指定環境變量PHPRC指向相同的php。 INI作爲一個Apache使用爲我工作在Ubuntu

export PHPRC=/etc/php5/apache2/php.ini 

或者把它放在$ HOME/.bashrc中導入每次CLI啓動

相關問題