2 php.ini files

Hrishikesh Choudhari picture Hrishikesh Choudhari · Oct 6, 2010 · Viewed 14.2k times · Source

I have found that:

When I type the following on terminal:

php -i | grep php.ini

I get the output:

The Loaded Configuration file is @ /etc/php5/cli/php.ini

However, from phpinfo(), I get to see:

The loaded ini file is @ /etc/php5/apache2/php.ini

Which one of these is working right now? How is it possible to have two php.ini files ?

Answer

Tatu Ulmanen picture Tatu Ulmanen · Oct 6, 2010

Depends on where you are running PHP from. If you run it from command line, it uses the cli/php.ini and apache2/php.ini when run through apache.

You are executing phpinfo() through the browser, hence you get /etc/php5/apache2/php.ini as the answer. Running php -r "phpinfo();" | grep "Loaded Configuration" from the terminal should output the CLI ini. Same function, context changes.

The advantage of this system is obviously to allow different configurations depending on the context. For a simplified example, you might want to have safe_mode on in apache but it's unnecessary in CLI mode.

Your .ini paths are actually quite unusual. Normally, the default .ini is just php.ini and CLI .ini is called php-cli.ini and they reside in the same folder.

I'm no expert on the subject but this should be the basic idea. If anyone has any corrections, I'd be happy to hear them.