配置文件

配置文件

配置文件

配置文件(php.ini)在 PHP 启动时被读取。对于服务器模块版本的 PHP,仅在 web

服务器启动时读取一次。对于

CGI 和 CLI 版本,每次调用都会读取。

php.ini 的搜索路径如下(按顺序):

SAPI 模块所指定的位置(Apache 2 中的 PHPIniDir

指令,CGI 和 CLI 中的 -c

命令行选项)。

PHPRC 环境变量。

可以为不同版本的 PHP 指定不同的 php.ini

文件位置。注册表目录所在的位置取决于你的系统是 32 位还是 64 位。32-bit

的 PHP 运行在 32-bit 的系统或 64-bit 的 PHP 运行在 64-bit 系统时使用 [(HKEY_LOCAL_MACHINE\SOFTWARE\PHP]

32-bit 的 PHP 运行在 64-bit 的系统上时,则使用 [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]] 替代。

系统版本跟 PHP 版本架构一致时,会按以下顺序依次进行检查:

[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z],

[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y] 和

[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x],其中的

x,y 和 z 指的是 PHP 主版本号,次版本号和发行批次。

对于 32 bit 版本的 PHP 运行在 64 bit 系统上的情况,则会按以下顺序依次进行检查:

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y.z],

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y] 和

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\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),或

--with-config-file-path 编译时选项指定的位置。

如果存在 php-SAPI.ini(SAPI 是当前所用的 SAPI

名称,因此实际文件名为 php-cli.ini 或

php-apache.ini 等),则会用它替代 php.ini。SAPI

的名称可以用 php_sapi_name() 来测定。

注意:

Apache web 服务器在启动时会把目录转到根目录,这将导致 PHP 尝试在根目录下读取

php.ini,如果存在的话。

可以在如下所示的 php.ini 配置值中引用环境变量。自 PHP 8.3.0 起,可以指定一个后备值,当引用的变量未定义时使用该值。

示例 #1 php.ini 中的环境变量

; PHP_MEMORY_LIMIT 来自于环境变量的值

memory_limit = ${PHP_MEMORY_LIMIT}

; 如果 PHP_MAX_EXECUTION_TIME 未定义,将回退到 30

max_execution_time = ${PHP_MAX_EXECUTION_TIME:-30}

由扩展库处理的 php.ini 指令,其文档分别在各扩展库的页面。内核配置选项见附录。不过也许不是所有的 PHP

指令都在手册中有文档说明。要得到自己的 PHP 版本中的配置指令完整列表,请阅读

php.ini 文件,其中都有注释。此外,也许从 Git 得到的» 最新版 php.ini 也有帮助。

示例 #2 php.ini 示例

; any text on a line after an unquoted semicolon (;) is ignored

[php] ; section markers (text within square brackets) are also ignored

; Boolean values can be set to either:

; true, on, yes

; or false, off, no, none

register_globals = off

track_errors = yes

; you can enclose strings in double-quotes

include_path = ".:/usr/local/lib/php"

; backslashes are treated the same as any other character

include_path = ".;c:\php\lib"

在 .ini 文件内可能会引用已存在的 .ini

变量。例如:open_basedir = ${open_basedir}

":/new/dir"。

扫描路径配置

可以通过配置,让 PHP 在读完 php.ini 后,扫描指定路径中的附加 .ini 配置文件。编译时通过

--with-config-file-scan-dir

参数来指定要扫描的目录。扫描路径也可以通过环境变量

PHP_INI_SCAN_DIR 来设置。

通过在扫描路径配置中加入特定系统的目录分隔符(Windows、NetWare

和 RISC OS 下是 ;;其它操作系统下是 :;该值可以通过

PHP 常量 PATH_SEPARATOR 获取),还可以设置多个扫描路径。如果

PHP_INI_SCAN_DIR 为空,PHP 一样会扫描在编译时指定的

--with-config-file-scan-dir 此路径。

对于每个目录而言,PHP 会以首字符顺序为优先级,扫描该目录下所有的 .ini 结尾的配置文件。所有被截入的配置文件,可以通过

php_ini_scanned_files() 函数来获取列表,也可以通过 PHP 命令行加入

--ini 参数来查看。

以下假设 PHP 配置为 --with-config-file-scan-dir=/etc/php.d

并且目录分隔符为 :

$ php

PHP 会加载 /etc/php.d/*.ini 全部配置文件。

$ PHP_INI_SCAN_DIR=/usr/local/etc/php.d php

PHP 会加载 /usr/local/etc/php.d/*.ini 全部配置文件。

$ PHP_INI_SCAN_DIR=:/usr/local/etc/php.d php

PHP 会加载 /etc/php.d/*.ini 下的全部配置文件,然后加载

/usr/local/etc/php.d/*.ini 下的全部配置文件。

$ PHP_INI_SCAN_DIR=/usr/local/etc/php.d: php

PHP 会加载 /usr/local/etc/php.d/*.ini 下的全部配置文件,然后加载

/etc/php.d/*.ini 下的全部配置文件。

你可能也喜欢

【1.13~1.17+】[转载]Scenter 矿物探测,再也不会担心因为脸黑找不到钻石了!
物件導向程式設計
be365是否安全

物件導向程式設計

📅 07-20 👀 9799
办光大银行信用卡不用后怎么取消?注销方法如下
国际大体联世界杯10月在晋江举办 河海大学、北师大代表中国参赛
中兴v880怎么样:中兴v880上市价格
be365是否安全

中兴v880怎么样:中兴v880上市价格

📅 07-07 👀 8403
战地一萌新入门指南
be365是否安全

战地一萌新入门指南

📅 07-23 👀 854
中国移动无忧行自用经验总结
be365是否安全

中国移动无忧行自用经验总结

📅 08-01 👀 7177
挖机司机招聘信息页介绍
365bet365娱乐场

挖机司机招聘信息页介绍

📅 06-27 👀 4134
中国驻埃及使馆发布斋月期间领事提醒
365bet官方投注网站

中国驻埃及使馆发布斋月期间领事提醒

📅 07-29 👀 8275