Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setting custom path to php.ini (not in Apache)

Tags:

php

I'm trying to learn Symfony that "requires" using php in the command line / terminal for some tasks.

I like to store my php.ini in the /apache2/conf directory, to have all the server configs at one place (and not having to deal with Windows' UAC everytime I change something). In Apache, it's no problem to set the default php.ini location via

PHPIniDir "C:/apache2/conf"

However, when running php from the terminal - not through the apache server - it looks for the file in the C:\Windows directory by default, although there's none there:

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)
...

Of course, I can bypass this by using the php -c C:\apache2\conf ... everytime I use it but I'd prefer a more easy and permanent solution.

Is this possible? Thanks in advance!

like image 501
Czechnology Avatar asked Feb 18 '11 20:02

Czechnology


1 Answers

http://www.php.net/manual/en/configuration.file.php

php.ini is searched in these locations (in order):

  • SAPI module specific location (PHPIniDir directive in Apache 2, -c command line option in CGI and CLI, php_ini parameter in NSAPI, PHP_INI_PATH environment variable in THTTPD)

  • The PHPRC environment variable. Before PHP 5.2.0 this was checked after the registry key mentioned below.

  • As of PHP 5.2.0, the location of the php.ini file can be set for different versions of PHP. The following registry keys are examined in order: [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z], [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y] and [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x], where x, y and z mean the PHP major, minor and release versions. If there is a value for IniFilePath in these keys, then the first one found will be used as the location of the php.ini (Windows only).

  • [HKEY_LOCAL_MACHINE\SOFTWARE\PHP], value of IniFilePath (Windows only).

  • Current working directory (except CLI)

  • The web server's directory (for SAPI modules), or directory of PHP (otherwise in Windows)

  • Windows directory (C:\windows or C:\winnt) (for Windows), or --with-config-file-path compile time option

In addition as of PHP 5.3, you can use per-directory .ini files. See http://php.net/manual/en/configuration.file.per-user.php

like image 58
glomad Avatar answered Oct 21 '22 01:10

glomad