如何配置 PHP 的命令行版本以在 Redhat 系统上具有不同的设置?
在基于 Debian 的系统上,php 有一个单独的命令行版本配置文件:/etc/php5/cli
。
在 Redhat 上,即使安装了 php-cli 包,也有/etc/php.ini
各种附加的 ini 文件,/etc/php.d/
但没有单独的命令行版本配置文件。
答案1
您有两个选择:
- 使用
-c
参数指示 ini 文件位置 - 创建
php-cli.ini
文件/etc/
来自官方 PHP 手册:
PHP 启动时会读取配置文件 (php.ini)。对于 PHP 的服务器模块版本,此操作仅在 Web 服务器启动时发生一次。对于 CGI 和 CLI 版本,此操作在每次调用时发生。
在这些位置搜索 php.ini(按顺序):
- SAPI 模块特定位置(Apache 2 中的 PHPIniDir 指令,CGI 和 CLI 中的 -c 命令行选项、NSAPI中的php_ini参数、THTTPD中的PHP_INI_PATH环境变量)
- 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 编译时选项。
如果 php-SAPI.ini 存在(其中 SAPI 是正在使用的 SAPI,因此,例如,php-cli.ini或 php-apache.ini)它代替了 php.ini。可以使用 php_sapi_name() 确定 SAPI 名称。