在哪里可以找到php.ini?


881

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

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

最好的收获是最后一步是配置php.ini,但是我的系统上没有php.ini。恐怖的恐怖。PHP可以正常工作,当然除了我要使用的这种新型ibm_db2东西之外,其他人可以使用GUI进行修改DB2。(我尝试了一个小的php脚本,该脚本失败了,并指示ibm_db2函数不可用)。

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


120
90%的时间是/etc/php5/apache2/php.ini
亚当


6
否决票,因为问题的前提是错误的。“我的系统上没有php.ini”不,您只是无法找到它。说到这,locate php.ini将在短时间内告诉您文件在系统上的位置。
Lightness Races in Orbit

1
@Adam:除非它不是PHP5;)
线

2
@line是的,尽管我没有意识到支持的数量,但我的评论已不再相关了!
亚当

Answers:


466

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

<?php phpinfo(); ?>

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

OP更新:

  1. 先前接受的答案可能对您来说更快,更方便,但这并不总是正确的。查看有关该答案的评论。
  2. 还请注意此答案中<?php echo php_ini_loaded_file(); ?>提到的更方便的替代方法。

11
这应该是公认的答案。如果您已安装CLI并运行了apache,则它可能具有自己的ini文件(就像我的系统一样)。使用接受的答案将返回CLI正在使用的内容,而不是apache的内容。
2014年

2
@丹是的,你是对的。我正在更改对此答案的接受答案,因为您提到的问题在实践中也遇到了某人(他对先前接受的答案发表了评论)。(顺便说一句,如果您对这个问题发表评论,我会早点解决此问题的。)
necromancer 2014年

2
这不适用于我的安装。错别字?应该是<?php phpinfo(); ?>
svenyonson

9
php -r \@phpinfo\(\)\;为我工作php -r \@phpinfo\(\)\; | grep 'PHP Version' -m 1以获取特定信息
jgraup

@zylstra尝试:<?php echo php_ini_loaded_file(); ?>
Ates

834

在命令行上执行:

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

您可以phpinfo()在脚本中使用grep复制相同的信息,然后通过浏览器进行调用。在输出的第一块中提到了它。php -i对于命令行也一样,但是非常不舒服。


5
接受最早的,以前最简单的答案(因此,我不得不等待一段时间才能接受)。感谢您的扩展,这可能会帮助下一个寻找信息的人。对我来说,第二行说(无),将php.ini文件放在第一行的路径中后,一切正常。谢谢!
necromancer

12
我使用了此命令并编辑了它也指导我的php.ini文件,并且我的PHP设置没有更改,并且我意识到它没有为我提供正确的php.ini文件。我尝试使用phpinfo()PHP函数,它为我提供了我需要编辑的php.ini的实际正确位置。我认为这非常重要,希望对您有所帮助。
thecommonthread 2014年

3
/etc/php5/apache2/php.ini
亚当

@thecommonthread感谢您指出您在实践中遇到的问题。我已将接受的答案更改为突出显示创建.php文件的答案。顺便说一句,如果您对问题发表评论,那么我会得到通知,我会尽快解决问题。
necromancer

5
@Pacerier这与不同的PHP安装无关,但是不同的SAPI可以使用不同的ini文件。我不使用apache模块,但是据我所记得,我认为没有办法绕过phpinfo.php-like文件。使用FPM,您至少可以使用php5-fpm -i | grep '\.ini'。通常,您使用两次或三遍,直到一天结束
时才

133

这对我有用:

php -i | grep 'php.ini'

您应该看到类似以下内容:

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

ps仅获取php.inin路径

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

5
这种方法只适用,如果一个php.ini,而这正是问题:如果没有,你还是不知道去哪里找的,或在哪里放置一个新的。
2013年

我从来没有遇到没有php.ini文件的情况。
coderama 2013年

运行这个命令给我Configuration File (php.ini) Path => /usr/lib,但是运行<?php phpinfo(); ?>给我Loaded Configuration File: /etc/php.ini。因此,phpinfo()在我的情况下更可靠。
Leo Galleguillos

2
这并不完全正确。每个使用PHP语言的框架都有其自己的php.ini文件。如果您从命令行调用该行,则可能最终会收到类似/var/php5/cli/php.ini之类的信息,这不是在Web环境中运行PHP时使用的文件。对于该文件,您应该查看apache2文件夹。
Andrea Moro 2014年

63

在命令窗口中键入

php --ini

它将向您显示类似的路径

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

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

echo phpinfo();


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


或尝试另一种方式

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


11
这不如之类的方法php -i | grep 'php.ini',因为它可以找到任何 php.ini,并且不会告诉您您的PHP安装使用的是哪个。另外,如果locate数据库不是最新的,它可能会给出错误的结果。
lxg


22

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

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

阿帕奇

只需将以下内容添加到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());'

被低估,彻底和(几乎)正确的答案。我几乎将其切换为正确答案,但担心php_ini_loaded_file可能并不总是可用。
necromancer

@zylstra您的php版本是什么?php_ini_loaded_file说php版本> = 5.2.4 的文档
necromancer

@necromancer现在不确定。忘记了我正在检查的系统。:/
zylstra

8
find / -name php.ini

嘿...对我有用!


3
一会儿,对于两个,如果您有多个,那么您如何知道实际使用的是哪个?
necromancer 2014年

1
是的,确实php --ini可以,但是这只是另一种选择:)通常有一个,/etc/php5/cli/php.ini /etc/php5/apache2/php.ini /etc/php5/cgi/php.ini而且通常您想要的那个很明显。(cli,apache,cgi)
Banned_User 2014年

这不是一个好的解决方案,因为我们不打算在磁盘上找到所有的php.ini文件。

4

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

$ -> php -i | ack config # Use fgrep -i if you don't have ack

Configure Command =>  './configure'  ...
Loaded Configuration File => /path/to/php.ini


2

尝试此解决方案之一

  1. 在您的终端机中 find / -name "php.ini"

  2. 在终端中输入 php -i | grep php.ini。它应将文件路径显示为Configuration File (php.ini) Path => /etc

  3. 如果您可以访问一个php文件,请在编辑器(记事本)中将其打开,并<?php 在新行后插入以下代码phpinfo();这将告诉您php.ini的位置
  4. 您也可以在交互模式下与php对话。只需输入php -a终端,然后输入phpinfo();即可。PHP启动后。

点1、2和4容易受到多种安装问题的影响;已经有好答案了。无需添加在此处未添加任何内容的答案。
necromancer

@necromancer详细解释您的问题,因此对某些人很有用。对于不好的和无用的答案,我们表示赞成和反对。社区将决定。
cherankrish

-1

已经提到了几种查找php.ini文件的有效方法,但是如果您因为想在bash脚本中对其进行操作而遇到了此页面,请执行以下操作:

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


1
请改用此方法:stackoverflow.com/a/24342463/621338而不是将其grep出来,如果文本更改,它很脆弱,您可以让php仅打印文件名,并在bash脚本中使用它,而不会像上面那样复杂。
necromancer
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.