2024 年 PHP 日本研討會

如何更改設定

以 Apache 模組執行 PHP

當以 Apache 模組使用 PHP 時,您也可以使用 Apache 設定檔(例如 httpd.conf)和 .htaccess 檔案中的指令來更改設定。您需要「AllowOverride Options」或「AllowOverride All」權限才能執行此操作。

有幾個 Apache 指令允許您從 Apache 設定檔中更改 PHP 設定。若要查看哪些指令屬於 INI_ALLINI_PERDIRINI_SYSTEM 類型,請參閱php.ini 指令列表附錄。

php_value 名稱

設定指定指令的值。只能用於 INI_ALLINI_PERDIR 類型的指令。要清除先前設定的值,請使用 none 作為值。

注意不要使用 php_value 來設定布林值。應該使用 php_flag(見下文)。

php_flag 名稱 on|off

用於設定布林設定指令。只能用於 INI_ALLINI_PERDIR 類型的指令。

php_admin_value 名稱

設定指定指令的值。這在 .htaccess 檔案中*不能使用*。任何使用 php_admin_value 設定的指令類型都不能被 .htaccessini_set() 覆蓋。要清除先前設定的值,請使用 none 作為值。

php_admin_flag 名稱 on|off

用於設定布林設定指令。這在 .htaccess 檔案中*不能使用*。任何使用 php_admin_flag 設定的指令類型都不能被 .htaccessini_set() 覆蓋。

範例 #1 Apache 設定範例

<IfModule mod_php5.c>
  php_value include_path ".:/usr/local/lib/php"
  php_admin_flag engine on
</IfModule>
<IfModule mod_php4.c>
  php_value include_path ".:/usr/local/lib/php"
  php_admin_flag engine on
</IfModule>

警告

PHP 常數在 PHP 之外不存在。例如,在 httpd.conf 中,您不能使用 PHP 常數,例如 E_ALLE_NOTICE 來設定 error_reporting 指令,因為它們沒有意義,並且會被評估為 *0*。請改用相關聯的位元遮罩值。這些常數可以在 php.ini 中使用。

透過 Windows 登錄檔更改 PHP 設定

在 Windows 上執行 PHP 時,可以使用 Windows 登錄檔逐目錄修改設定值。設定值儲存在登錄機碼 HKLM\SOFTWARE\PHP\Per Directory Values 中,位於對應於路徑名稱的子機碼中。例如,目錄 c:\inetpub\wwwroot 的設定值將儲存在機碼 HKLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot 中。該目錄的設定將作用於從該目錄或其任何子目錄執行的任何腳本。機碼下的值應具有 PHP 設定指令的名稱和字串值。值中的 PHP 常數不會被解析。但是,只有在 INI_USER 中可更改的設定值才能以這種方式設定,INI_PERDIR 值則不能,因為這些設定值會針對每個請求重新讀取。

PHP 的其他介面

無論您如何執行 PHP,您都可以在腳本執行期間透過 ini_set() 更改某些值。有關更多資訊,請參閱 ini_set() 頁面上的文件。

如果您想查看系統上所有配置設定及其目前值的完整清單,您可以執行 phpinfo() 函式,並檢閱結果頁面。您也可以在執行時期使用 ini_get()get_cfg_var() 來存取個別配置指令的值。

新增註解

使用者貢獻的註解 2 則註解

contrees.du.reve at gmail dot com
16 年前
能夠將 php 指令放在 httpd.conf 中,並讓它們在每個目錄或每個虛擬主機上運作,真是太棒了。現在還有另一個方面可能值得注意

放在 apache 設定檔中的 php.ini 指令適用於以 apache 模組方式執行的 php(例如在網頁中),但不適用於以 CLI(命令列介面)方式執行的 php。

這個功能可能不受少數人不歡迎,但我猜大多數人會覺得它很有用。就我而言,我很高興我可以在我的 httpd.conf 檔案中使用 open_basedir,它限制了我的網域中網頁使用者和子管理員的存取權限,但它並不限制我自己的命令列 php 腳本...
ohcc at 163 dot com
9 天前
如果一個指令在不同的地方被設定多次,則優先順序按降序排列如下
php-fpm php_*[foo] = bar
命令列參數 -d foo=bar
環境變數 foo=bar 並在 php.ini 中以 ${foo} 引用
php.ini foo=bar
To Top