将自定义路径设置为php.ini(不在Apache中)
我试图学习Symfony,它“需要”在命令行/终端中使用php来完成某些任务 我喜欢将我的将自定义路径设置为php.ini(不在Apache中),php,Php,我试图学习Symfony,它“需要”在命令行/终端中使用php来完成某些任务 我喜欢将我的php.ini存储在/apache2/conf目录中,以便将所有服务器配置在一个位置(而不必每次更改某些内容时都处理Windows的UAC)。在Apache中,通过设置默认php.ini位置没有问题 PHPIniDir "C:/apache2/conf" 但是,当从终端(而不是通过apache服务器)运行php时,默认情况下会在C:\Windows目录中查找该文件,尽管那里没有: C:\>php -
php.ini
存储在/apache2/conf
目录中,以便将所有服务器配置在一个位置(而不必每次更改某些内容时都处理Windows的UAC)。在Apache中,通过设置默认php.ini位置没有问题
PHPIniDir "C:/apache2/conf"
但是,当从终端(而不是通过apache服务器)运行php时,默认情况下会在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)
...
当然,我可以通过每次使用php-c:\apache2\conf…
绕过这个问题,但我更喜欢一个更简单、更持久的解决方案
这可能吗?
提前谢谢 尝试添加此注册表项
HKEY_LOCAL_MACHINE\SOFTWARE\PHP\5\ini文件路径->(您的路径)尝试添加此注册表项 HKEY\U LOCAL\U MACHINE\SOFTWARE\PHP\5\IniFilePath->(您的路径) 在以下位置搜索php.ini(按顺序):
- SAPI模块特定位置(Apache 2中的PHPIniDir指令,CGI和CLI中的-c命令行选项,NSAPI中的php_ini参数,THTTPD中的php_ini_PATH环境变量)
- PHPRC环境变量。在PHP5.2.0之前,这是在下面提到的注册表项之后检查的
- 从PHP5.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)或--带有配置文件路径编译时选项
- SAPI模块特定位置(Apache 2中的PHPIniDir指令,CGI和CLI中的-c命令行选项,NSAPI中的php_ini参数,THTTPD中的php_ini_PATH环境变量)
- PHPRC环境变量。在PHP5.2.0之前,这是在下面提到的注册表项之后检查的
- 从PHP5.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)或--带有配置文件路径编译时选项
此外,从PHP5.3开始,还可以使用per directory.ini文件。请参见您可以通过.htaccess和httpd.conf覆盖php.ini值。您不需要维护两个单独的.ini文件,而是可以有一个全局文件,然后在Apache.conf文件中有一些重写。@profitphp我同意您的意见,但不知道在这种情况下使用Linux会有什么改变。Marc,我不想有两个单独的.ini文件,这正是问题所在。但我的问题是CLI,因此.htaccess或httpd.conf都没有帮助。现在修好了,谢谢!profitphp,我尝试了很多次,发行了很多版本,但它从来没有让我心动过。也许下次:PYou可以通过.htaccess和httpd.conf覆盖php.ini值。您不需要维护两个单独的.ini文件,而是可以有一个全局文件,然后在Apache.conf文件中有一些重写。@profitphp我同意您的意见,但不知道在这种情况下使用Linux会有什么改变。Marc,我不想有两个单独的.ini文件,这正是问题所在。但我的问题是CLI,因此.htaccess或httpd.conf都没有帮助。现在修好了,谢谢!profitphp,我尝试了很多次,发行了很多版本,但它从来没有让我心动过。也许下次吧:我真傻,我在谷歌上找不到它,也没想过要查看手册。。。我已经使用了环境变量,效果非常好,谢谢!我真傻,我在谷歌上找不到它,也没想到要查看手册。。。我已经使用了环境变量,效果非常好,谢谢!