在网络服务器上运行的php和CLI版本没有使用相同的php.ini文件。如果我执行命令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)
我的网络版使用C:\wamp\bin\apache\Apache2.2.21\bin\php.ini
中的php.ini。对于使用wamp的人来说,这可能很常见。
如何将加载的配置文件更改为从C:\wamp\bin\apache\Apache2.2.21\bin\php.ini
读取,这样我就不必维护2个不同的php.ini版本了?
答案 0 :(得分:18)
每http://php.net/configuration.file:
在这些位置搜索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 \ x.y.z],[HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ x.y]和[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时指定-c
选项来基于每个执行覆盖php.ini搜索目录:
> php --help Usage: php [options] [-f] [--] [args...] ... -c | Look for php.ini file in this directory
答案 1 :(得分:10)
通过指定环境变量PHPRC指向与Apache在Ubuntu上为我工作的php.ini相同的php.ini
export PHPRC=/etc/php5/apache2/php.ini
或者每次启动cli时都将它放在$ HOME / .bashrc中导入
答案 2 :(得分:1)
我花了大约3个小时尝试完全按照你的问题提出要求。无法做到。我放弃并将php.ini复制到C:\ Windows并更改了我的ENV变量" PHPRC"到C:\ Windows(和httpd.conf)。这样我的CLI php和Apach php e都使用相同的文件。我无法得到" php -m"显示我在php.ini中加载的模块,直到我做了这个改变...
答案 3 :(得分:0)
尝试在两侧运行phpinfo()
功能
Web服务器和CLI,找出双方{/ 1}}文件的确切位置
并仅维护这些文件
答案 4 :(得分:0)