怎樣修改配置設定

PHP 運行於 Apache 模組模式

當使用 PHP 作為 Apache 模組時,也可以用 Apache 的配置檔(例如 httpd.conf)和 .htaccess 檔案中的指令來修改 PHP 的配置設定。需要有「AllowOverride Options」或「AllowOverride All」權限才可以。

在 PHP 4 和 PHP 5 中,有幾個 Apache 指令可以使會員在 Apache 配置檔內定修改 PHP 的配置。哪些指令屬於 PHP_INI_ALLPHP_INI_PERDIRPHP_INI_SYSTEM 中的哪一個,請參考附錄中的 php.ini 配置選項清單

注: 在 PHP 3 中,每個 php3.ini 中的配置設定都有相應的 Apache 指令,不過名字前要加上前綴「php3_」。

php_value name value

設定特殊的值。只能用於 PHP_INI_ALLPHP_INI_PERDIR 類型的指令。要清除先前設定的值,把 value 設為 none

注: 不要用 php_value 設定布林值。應該用 php_flag(見下面)。

php_flag name on|off

用來設定布林值的配置指令。僅能用於 PHP_INI_ALLPHP_INI_PERDIR 類型的指令。

php_admin_value name value

設定特殊的指令的值。不能用於 .htaccess 檔案。任何用 php_admin_value 設定的指令都不能被 .htaccess 或 virtualhost 中的指令覆蓋。要清除先前設定的值,把 value 設為 none

php_admin_flag name on|off

用來設定布林值的配置指令。不能用於 .htaccess 檔案。任何用 php_admin_flag 設定的指令都不能被 .htaccess 或 virtualhost 中的指令覆蓋。

例子 9-2. Apache 配置例子

<IfModule mod_php5.c>
  php_value include_path ".:/usr/local/lib/php"
  php_admin_flag safe_mode on
</IfModule>
<IfModule mod_php4.c>
  php_value include_path ".:/usr/local/lib/php"
  php_admin_flag safe_mode on
</IfModule>
<IfModule mod_php3.c>
  php3_include_path ".:/usr/local/lib/php"
  php3_safe_mode 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 常量不被解析。不過只有可修改範圍是 PHP_INI_USER 的配置值可以用此方法設定,PHP_INI_PERDIR 的值就不行。

其它介面下的 PHP

無論怎樣運行 PHP,都可以在腳本中通過 ini_set() 而在運行時修改某個值。更多訊息見手冊中 ini_set() 的頁面。

若果對自己系統中的配置設定及其現用的值的完整清單感興趣,可以運行 phpinfo() 函數並檢視其結果的頁面。也可以在運行時用 ini_get()get_cfg_var() 取得個別配置指令的值。