php7 - where is php.ini ubuntu
Dude, where's my php.ini? (8)
A few years ago I installed Apache 2.2x and PHP 5.3.1 on a Linux server I maintain. I used .tar.gz's and built them as instructed (instead of rpms and what-have-you). And all was fine.
Today I need to install this which seems like a PHP library. I went through all the steps up to make install, and I find ibm_db2.so in
The great catch is the last step is to configure php.ini but there is NO php.ini on my system. Horror of horrors. PHP works fine, except of course for this new-fangled ibm_db2 thingamagic that I want to use so somebody can use a GUI to tinker with
DB2. (I tried a small php script which fails and indicates that the ibm_db2 functions are not available).
I have to deal with PHP once every few years, so please enlighten me at a very basic level about what I could do to enable web-based GUI access to
Best way to find this is: create a php file and add the following code:
<?php phpinfo(); ?>
and open it in browser, it will show the file which is actually being read!
Updates by OP:
For SAPI: php-fpm
There is no need to create a php.info file (it is not a good policy to leave it for the world to read anyway). On the command line:
php-fpm -i | more
Somewhere in its output, it will show this line:
Configuration File (php.ini) Path => /etc
Here is a more complete explanation: https://www.cloudinsidr.com/content/how-to-figure-out-your-php-configuration-parameters-without-info-php/
On the command line execute:
You will get something like:
Configuration File (php.ini) Path: /etc/php5/cli Loaded Configuration File: /etc/php5/cli/php.ini Scan for additional .ini files in: /etc/php5/cli/conf.d Additional .ini files parsed: /etc/php5/cli/conf.d/curl.ini, /etc/php5/cli/conf.d/pdo.ini, /etc/php5/cli/conf.d/pdo_sqlite.ini, /etc/php5/cli/conf.d/sqlite.ini, /etc/php5/cli/conf.d/sqlite3.ini, /etc/php5/cli/conf.d/xdebug.ini, /etc/php5/cli/conf.d/xsl.ini
That's from my local dev-machine. However, the second line is the interesting one. If there is nothing mentioned, have a look at the first one. That is the path, where PHP looks for the
You can grep the same information using
phpinfo() in a script and call it with a browser. Its mentioned in the first block of the output.
php -i does the same for the command line, but its quite uncomfortable.
PHP comes with two native functions to show which config file is loaded :
- php_ini_loaded_file return the loaded ini file
- php_ini_scanned_files return a list of .ini files parsed from the additional ini dir
Depending on your setup, Apache and CLI might use different ini files. Here are the two solutions :
Just add the following in a php file and open it in your browser
print php_ini_loaded_file(); print_r(php_ini_scanned_files());
Copy-paste in your terminal :
php -r 'print php_ini_loaded_file(); print_r(php_ini_scanned_files());'
This command should help you to find it
php -r "phpinfo();" | grep php.ini
This works for me:
php -i | grep 'php.ini'
You should see something like:
Loaded Configuration File => /usr/local/lib/php.ini
p.s. To get only the php.inin path
php -i | grep /.+/php.ini -oE
You can get more info about your config files using something like:
$ -> php -i | ack config # Use fgrep -i if you don't have ack Configure Command => './configure' ... Loaded Configuration File => /path/to/php.ini
find / -name php.ini
Hey... it worked for me!