我在哪里可以找到php.ini?

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

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

最大的问题是最后一步是配置文件php.ini,但是我的系统上没有<强>任何php.ini文件。恐怖的恐怖。PHP工作正常,当然除了我想使用的这个新奇的ibm_db2东西,所以有人可以使用GUI来修补DB2。(我尝试了一个小PHP脚本,失败了,表明ibm_db2函数不可用。)

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

1092870 次浏览

在命令行上执行:

php --ini

你会得到类似的东西:

Configuration File (php.ini) Path: /etc/php5/cliLoaded Configuration File:         /etc/php5/cli/php.iniScan for additional .ini files in: /etc/php5/cli/conf.dAdditional .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文件的路径。

您可以在脚本中使用phpinfo grep相同的信息并使用浏览器调用它。它在输出的第一块中提到。php -i对命令行执行相同的操作,但这很不舒服。

phpinfo();

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

php -i

您可以使用以下方式获取有关配置文件的更多信息:

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

这对我有用:

php -i | grep 'php.ini'

你应该看到类似的东西:

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

P. S.

要仅获取php.ini路径,请使用:

php -i | grep /.+/php.ini -oE

找到它的最佳方法是:

创建一个PHP(. php)文件并添加以下代码:

<?php phpinfo(); ?>

并在浏览器中打开它。它将显示实际正在读取的文件!

OP更新:

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

PHP附带了两个本机函数来显示加载了哪个配置文件:

根据您的设置,apacheCLI可能使用不同的. ini文件。以下是两个解决方案:

apache:

只需在PHP(. php)文件中添加以下内容并在浏览器中打开它:

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

CLI:

在您的终端中复制粘贴:

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

嘿…它为我工作!

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

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

在命令窗口中,键入

php --ini

它将向您展示路径,例如:

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

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

echo phpinfo();

对于SAPI: php-fpm

不需要创建php.info文件(无论如何将其留给全世界阅读都不是一个好政策)。在命令行上:

php-fpm -i | more

在其输出的某个地方,它将显示以下行:

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

这里有一个更完整的解释:如何在没有info.php的情况下确定PHP配置参数

使用以下命令查找Linux上的php.ini文件路径。

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

或者试试另一种方式:

php --ini

它显示路径结果。

尝试这些解决方案之一

  1. 在您的终端中,键入find / -name "php.ini"

  2. 在您的终端中,键入php -i | grep php.ini。它应该将文件路径显示为"配置文件(php.ini)路径=> /etc"

  3. 如果您可以访问其中一个PHP文件,请在编辑器中打开它(记事本)并在新行的<?php之后插入phpinfo();。这将告诉您php.ini的位置。

  4. 您还可以在交互模式下与PHP交谈。只需在终端中键入php -a,并在PHP解释器启动后键入phpinfo();

在命令行中运行它:

php -r "echo php_ini_loaded_file().PHP_EOL;"

根据这个回答,从php7开始,常规php.ini文件是删除,并添加了php.ini-productionphp.ini-devlopment

因此,而不是php.ini不存在于我的情况下(我已经安装了php 8.1),使用php.ini-production,它位于php安装文件夹(类似于:C:\PHP-8.1.5)并创建一个文件并将其命名为php.ini,然后将php.ini-production的内容复制到这个新的php.ini中。