伙计,我的php.ini在哪里?

几年前,我在我维护的Linux服务器上安装了Apache 2.2x和PHP 5.3.1。 我使用了.tar.gz,并按照指示构build它们(而不是rpms和what-have-you)。 一切都很好。

今天我需要安装这看起来像一个PHP库。 我完成了所有安装步骤,并且在$PHP_HOME/lib/extensions/somecomplicatedname/ibm_db2.so ibm_db2.so中find了$PHP_HOME/lib/extensions/somecomplicatedname/ibm_db2.so

最大的困难是最后一步是configurationphp.ini,但在我的系统上没有php.ini。 恐怖的恐怖。 PHP工作正常,当然除了这个新的ibm_db2 thingamagic,我想要使用,所以有人可以使用GUI修补与DB2 。 (我尝试了一个小php脚本失败,并表示ibm_db2函数不可用)。

我必须每隔几年处理一次PHP,所以请在最基本的层面告诉我,我能做些什么来启用基于Web的GUI访问DB2

find这个最好的方法是:创build一个PHP文件,并添加以下代码:

 <?php phpinfo(); ?> 

并在浏览器中打开,会显示正在读取的文件!

OP的更新:

  1. 以前接受的答案可能会更快,更方便,但并不总是正确的。 请参阅有关该答案的评论。
  2. 还请注意更方便的替代<?php echo php_ini_loaded_file(); ?> <?php echo php_ini_loaded_file(); ?>在这个答案中提到。

在命令行上执行:

 php --ini 

你会得到像这样的东西:

 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 

这是从我的本地开发机器。 但是,第二行是有趣的一个。 如果没有提到什么,看看第一个。 这是PHP查找php.ini的path。

您可以在脚本中使用phpinfo()phpinfo()相同的信息,并用浏览器调用它。 它在输出的第一部分提到。 php -i在命令行中的function相同,但是相当不舒服。

这适用于我:

 php -i | grep 'php.ini' 

你应该看到像这样的东西:

 Loaded Configuration File => /usr/local/lib/php.ini 

在命令窗口中键入

 php --ini 

它会告诉你这样的path

 Configuration File (php.ini) Path: /usr/local/lib Loaded Configuration File: /usr/local/lib/php.ini 

如果上面的命令不起作用,那么使用这个

 echo phpinfo(); 

这个命令应该可以帮助你find它

 php -r "phpinfo();" | grep php.ini 
 phpinfo(); 

会告诉你它的位置,或者从命令行

 php -i 

使用以下命令查找php.ini文件path。

 [root@AnyDirectory ~]# locate php.ini /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 

或者以另一种方式尝试

[root@AnyDirectory ~]# php --ini
它显示了path结果

PHP有两个本地函数来显示哪个configuration文件被加载:

  • php_ini_loaded_file返回加载的ini文件
  • php_ini_scanned_files返回从额外的ini目录parsing.ini文件的列表

根据您的设置, ApacheCLI可能使用不同的ini文件。 这里有两个解决scheme:

Apache:

只需在php文件中添加以下内容,然后在浏览器中打开它

 print php_ini_loaded_file(); print_r(php_ini_scanned_files()); 

CLI:

复制粘贴到您的terminal中:

 php -r 'print php_ini_loaded_file(); print_r(php_ini_scanned_files());' 
 find / -name php.ini 

嘿…它为我工作!

你可以使用类似的东西获得更多关于你的configuration文件的信息:

 $ -> php -i | ack config # Use fgrep -i if you don't have ack Configure Command => './configure' ... Loaded Configuration File => /path/to/php.ini 

对于SAPI:php-fpm

没有必要创build一个php.info文件(这是不是一个好的政策,让世界读取)。 在命令行上:

 php-fpm -i | more 

在输出的某个地方,它会显示这一行:

 Configuration File (php.ini) Path => /etc 

这是一个更完整的解释: https : //www.cloudinsidr.com/content/how-to-figure-out-your-php-configuration-parameters-without-info-php/

有几种有效的方式已经提到查找php.ini文件,但是如果你遇到这个页面,因为你想在bash脚本中做一些事情:

path_php_ini="$(php -i | grep 'Configuration File (php.ini) Path' | grep -oP '(?<=\=\>\s).*')" echo ${path_php_ini}