Where Can I Find Php. Ini?
A Few Year's 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...
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 found ibm_db2.so in $PHP_HOME/lib/extensions/somecomplicatedname/ibm_db2.so.
The great catch is the last step is to configure file php.ini, but there aren't any php.ini files on my system. Horror of horrors. PHP works fine, except of course for this newfangled ibm_db2 thingamajig 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 DB2.
14 Answers
On the command line execute:
php --ini
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 php.ini file.
You can grep the same information using phpinfo() in a script and call it with a browser. It’s mentioned in the first block of the output. php -i does the same for the command line, but it’s quite uncomfortable.
The best way to find this is:
Create a PHP (.php) file and add the following code:
<?php phpinfo(); ?>
and open it in a browser. It will show the file which is actually being read!
Updates by the OP:
- The previously accepted answer is likely to be faster and more convenient for you, but it is not always correct. See comments on that answer.
- Please also note the more convenient alternative
<?php echo php_ini_loaded_file(); ?>mentioned in this answer.
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.ini path, use:
php -i | grep /.+/php.ini -oE
In a command window, type
php --ini
It will show you the path something like:
Configuration File (php.ini) Path: /usr/local/lib
Loaded Configuration File: /usr/local/lib/php.ini
If the above command does not work then use this:
echo phpinfo();
Use the following command to find the php.ini file path on Linux.
locate php.ini
Output:
/etc/php.ini
/etc/php.ini.rpmnew
/usr/share/doc/php-common-5.4.45/php.ini-development
/usr/share/doc/php-common-5.4.45/php.ini-production
Or try this other way:
php --ini
It shows the path result.
This command should help you to find it
php -r "phpinfo();" | grep php.ini
PHP comes with two native functions to show which configuration file is loaded:
- php_ini_loaded_file returns the loaded .ini file
- php_ini_scanned_files returns a list of .ini files parsed from the additional ini directory
Depending on your setup, Apache and CLI might use different .ini files. Here are the two solutions:
Apache:
Just add the following in a PHP (.php) file and open it in your browser:
print php_ini_loaded_file();
print_r(php_ini_scanned_files());