设置php.ini的自定义路径(不在Apache中)

时间:2011-02-18 20:27:22

标签: php

我正在尝试学习“需要”在命令行/终端中使用php执行某些任务的Symfony。

我喜欢将php.ini存储在/apache2/conf目录中,以便将所有服务器配置在一个位置(并且每次更改内容时都不必处理Windows的UAC)。在Apache中,通过

设置默认的php.ini位置没有问题
PHPIniDir "C:/apache2/conf"

然而,当从终端运行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)
...

当然,我可以在每次使用php -c C:\apache2\conf ...时使用它来绕过这一点,但我更喜欢更简单和永久的解决方案。

这可能吗? 提前谢谢!

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:0)

尝试添加此注册表项

HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ 5 \ IniFilePath - > (你的路径)