我正在尝试学习Symfony"需要"在命令行/终端中使用php执行某些任务.
我喜欢将我存储php.ini在/apache2/conf目录中,以便将所有服务器配置在一个地方(并且每次我更改内容时都不必处理Windows的UAC).在Apache中,通过设置默认的php.ini位置没有问题
PHPIniDir "C:/apache2/conf"
Run Code Online (Sandbox Code Playgroud)
但是,当从终端运行php时 - 而不是通过apache服务器 - 默认情况下它会在C:\ Windows目录中查找该文件,尽管那里没有:
C:\>php -i
...
Configuration File (php.ini) Path => C:\Windows
Loaded Configuration File => (none)
Scan this dir for additional .ini files => (none)
Additional .ini files parsed => (none)
...
Run Code Online (Sandbox Code Playgroud)
当然,我可以通过php -c C:\apache2\conf ...每次使用它来绕过它,但我更喜欢更简单和永久的解决方案.
这可能吗?提前致谢!
http://www.php.net/manual/en/configuration.file.php
在这些位置搜索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 5.3开始,您可以使用每个目录.ini文件.请参见http://php.net/manual/en/configuration.file.per-user.php