我的php.ini文件位于服务器上的哪个位置?

nec*_*cer 842 php linux php-ini

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

今天我需要安装这个看起来像PHP库的东西.我完成了所有步骤以进行安装,然后我找到了ibm_db2.so$PHP_HOME/lib/extensions/somecomplicatedname/ibm_db2.so

最好的方法是配置php.ini,但我的系统上没有php.ini.恐怖的恐怖.PHP工作正常,当然除了我想要使用的这个新奇的ibm_db2 thingamagic,所以有人可以使用GUI来修补DB2.(我尝试了一个小的php脚本失败并指示ibm_db2函数不可用).

我必须每隔几年处理一次PHP,所以请在非常基本的层面上启发我,了解如何启用基于Web的GUI访问DB2.

Kin*_*nch 806

在命令行上执行:

php --ini
Run Code Online (Sandbox Code Playgroud)

你会得到类似的东西:

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
Run Code Online (Sandbox Code Playgroud)

那是我当地的开发机器.然而,第二行是有趣的.如果没有提到,请看第一个.这就是PHP寻找的路径php.ini.

您可以phpinfo()在脚本中使用相同的信息grep并使用浏览器调用它.它在输出的第一个块中提到.php -i为命令行做同样的事情,但它非常不舒服.

  • 我使用了这个命令并编辑了它指向我的php.ini文件,我的PHP设置没有改变,我意识到它没有给我正确的php.ini文件.我尝试使用phpinfo()PHP函数,它给了我需要编辑的php.ini的实际正确位置.我认为这非常重要,我希望这有助于某人. (12认同)
  • 接受最老的和以前最简单的答案(SO迫使我等待一段时间才接受).感谢扩展,这可能有助于下一个寻找信息的人.对我来说,第二行说(无),并且在将php.ini文件放在第一行的路径中之后一切正常.谢谢! (5认同)
  • @Pacerier这与不同的PHP安装无关,但不同的SAPI可以使用不同的ini文件.我不使用apache模块,但据我记得,我认为没有办法绕过`phpinfo.php`类文件.使用FPM,您至少可以使用`php5-fpm -i | grep'\ .ini'`.通常你使用这两次或三次,并在一天结束时_know_文件所在的位置;) (5认同)
  • /etc/php5/apache2/php.ini (3认同)
  • 我最终也编辑了错误的ini文件,浪费了一个小时。这可能是我自己的愚蠢,但这对像我这样的人来说是一个警告 - 如果它不起作用,请创建一个 <?php phpinfo(); ?> 如上所述,因为这为我解决了这个问题 (2认同)

Tej*_*jas 444

找到这个的最佳方法是:创建一个php文件并添加以下代码:

<?php phpinfo(); ?>
Run Code Online (Sandbox Code Playgroud)

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

OP的更新:

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

  • 这应该是公认的答案.如果你安装了CLI并运行了apache,那么它可能有自己的ini文件(就像我的系统一样).使用接受的答案返回CLI使用的内容而不是apache. (11认同)
  • `php -r\@phpinfo \(\)\;`适用于我``php -r\@phpinfo \(\)\; | grep'PHP Version'-m 1`来提取具体信息 (7认同)
  • @Dan是的,你是对的.我正在改变对这个问题的接受答案,因为你提到的问题在实践中也遇到过某人(对先前接受的答案发表了评论).(顺便说一下,如果你对这个问题发表了评论,我会尽早解决这个问题.) (2认同)
  • 这不适用于我的安装.错字?应该是`<?php phpinfo(); ?>` (2认同)

cod*_*ama 127

这对我有用:

php -i | grep 'php.ini'
Run Code Online (Sandbox Code Playgroud)

你应该看到类似的东西:

Loaded Configuration File => /usr/local/lib/php.ini
Run Code Online (Sandbox Code Playgroud)

ps只获取php.inin路径

php -i | grep /.+/php.ini -oE
Run Code Online (Sandbox Code Playgroud)

  • 这只有作用,如果有_is_一个`php.ini`,这正是问题:如果没有,你仍然不知道在哪里看,或在哪里放置一个新的. (5认同)
  • 这不完全正确.每个使用PHP语言的框架都有自己的php.ini文件.如果从命令行调用该行,您可能最终会收到类似/var/php5/cli/php.ini的内容,这不是在Web环境中运行PHP时使用的文件.对于该文件,您应该查看apache2文件夹. (2认同)

bib*_*gar 63

在命令窗口类型中

php --ini
Run Code Online (Sandbox Code Playgroud)

它会告诉你类似的路径

Configuration File (php.ini) Path: /usr/local/lib
Loaded Configuration File:         /usr/local/lib/php.ini
Run Code Online (Sandbox Code Playgroud)

如果上述命令不起作用,请使用此命令

echo phpinfo();
Run Code Online (Sandbox Code Playgroud)


Rim*_*ius 31

此命令可以帮助您找到它

php -r "phpinfo();" | grep php.ini
Run Code Online (Sandbox Code Playgroud)


Sak*_*hik 29

使用以下命令php.ini在linux中查找文件路径.

[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
Run Code Online (Sandbox Code Playgroud)


或者尝试另一种方式

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

  • 这不像`php -i |这样的方法 grep'php.ini'`,因为它找到*any*php.ini并且没有告诉你PHP安装使用哪一个.此外,当`locate`数据库不是最新时,它可能会给出错误的结果. (10认同)

小智 26

phpinfo();
Run Code Online (Sandbox Code Playgroud)

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

php -i
Run Code Online (Sandbox Code Playgroud)


Cre*_*rge 21

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

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

Apache:

只需在php文件中添加以下内容并在浏览器中打开即可

print php_ini_loaded_file();
print_r(php_ini_scanned_files());
Run Code Online (Sandbox Code Playgroud)

CLI:

在您的终端中复制粘贴:

php -r 'print php_ini_loaded_file(); print_r(php_ini_scanned_files());'
Run Code Online (Sandbox Code Playgroud)


Max*_*Max 19

在命令行中运行它:

php -r "echo php_ini_loaded_file().PHP_EOL;"
Run Code Online (Sandbox Code Playgroud)


che*_*ish 9

尝试以下解决方案之一

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

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

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

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


Ban*_*ser 7

find / -name php.ini
Run Code Online (Sandbox Code Playgroud)

嘿......它对我有用!

  • 一个,它需要一段时间; 对于两个,如果你有多个,你怎么知道哪个是实际使用的? (3认同)

Zah*_*hra 0

根据这个答案,从PHP 7开始,常规 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