【问题标题】:Where can I find php.ini?在哪里可以找到 php.ini?
【发布时间】:2023-03-23 00:07:01
【问题描述】:

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

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

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

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

【问题讨论】:

  • 90% 的时间是 /etc/php5/apache2/php.ini
  • 问题的前提是错误的。 “我的系统上没有 php.ini” 不,您只是找不到它。说到这一点,locate php.ini 会立即告诉您文件在系统上的位置。
  • @Adam: 除非它不是 PHP5 ;)
  • @line 是的,我的评论不再相关,尽管没有意识到投票的数量!

标签: php linux php-ini


【解决方案1】:

在命令行执行:

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 对命令行也一样,但是很不舒服。

【讨论】:

  • 接受最旧的和以前最简单的答案(所以迫使我在接受之前等待一段时间)。感谢您的扩展,这可能会帮助下一个人寻找信息。对我来说,第二行说(无),在第一行的路径中放置一个 php.ini 文件后一切正常。谢谢!
  • 我使用了这个命令并编辑了它指向我的 php.ini 文件,我的 PHP 设置没有改变,我意识到它没有给我正确的 php.ini 文件。我尝试使用 phpinfo() PHP 函数,它为我提供了我需要编辑的 php.ini 的实际正确位置。我认为这非常重要,我希望这对某人有所帮助。
  • @thecommonthread 感谢您指出您在实践中遇到的问题。我已将接受的答案更改为突出显示创建.php 文件的答案。顺便说一句,如果您对问题发表评论,我会收到通知,我可以尽快解决问题。
  • @Pacerier 这个和不同的PHP安装没有关系,但是不同的SAPI可以使用不同的ini文件。我不使用 apache 模块,但据我记得我认为没有办法绕过phpinfo.php-like 文件。使用 FPM,您至少可以使用 php5-fpm -i | grep '\.ini'。通常你会使用两到三遍,到最后你知道文件在哪里;)
  • 我最终也编辑了错误的ini文件,浪费了一个小时。这可能是我自己的愚蠢,但这是对像我这样的人的警告 - 如果它不起作用,请创建一个 如上所述,因为它为我修复了它
【解决方案2】:

找到这个的最好方法是:

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

<?php phpinfo(); ?>

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

OP 的更新:

  1. 以前接受的answer 可能对您来说更快更方便,但并不总是正确的。请参阅该答案的 cmets。
  2. 另请注意this answer 中提到的更方便的替代方案&lt;?php echo php_ini_loaded_file(); ?&gt;

【讨论】:

  • 这应该是公认的答案。如果您安装了 CLI 并运行了 apache,那么它可能有自己的 ini 文件(就像我的系统一样)。使用接受的答案返回 CLI 使用的而不是 apache 的。
  • @Dan 是的,你是对的。我正在将接受的答案更改为这个答案,因为您提到的问题在实践中也遇到过某人(他评论了先前接受的答案)。 (顺便说一句,如果你对这个问题发表了评论,我会尽快解决这个问题。)
  • 这不适用于我的安装。错字?应该是&lt;?php phpinfo(); ?&gt;
  • php -r \@phpinfo\(\)\; 为我工作php -r \@phpinfo\(\)\; | grep 'PHP Version' -m 1 提取特定信息
  • @zylstra 试试:&lt;?php echo php_ini_loaded_file(); ?&gt;
【解决方案3】:

这对我有用:

php -i | grep 'php.ini'

您应该会看到如下内容:

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

附言

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

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

【讨论】:

  • 这只有在 php.ini 时才有效,这正是问题所在:如果没有,你仍然不知道在哪里看,或者在哪里放置一个新的。
  • 我从来没有遇到过没有php.ini文件的情况。
  • 运行这个命令给我Configuration File (php.ini) Path =&gt; /usr/lib,但是运行&lt;?php phpinfo(); ?&gt;给我Loaded Configuration File: /etc/php.ini。所以,phpinfo() 对我来说更可靠。
  • 这并不完全正确。每个使用 PHP 语言的框架都有自己的 php.ini 文件。如果您从命令行调用该行,您最终可能会收到类似 /var/php5/cli/php.ini 的内容,这不是在 Web 环境中运行 PHP 时使用的文件。对于该文件,您应该查看 apache2 文件夹。
  • 是否可以从 apache 获取输出 php -i | grep 'php.ini'? (script.php)
【解决方案4】:

在命令窗口中,键入

php --ini

它会向您显示类似的路径:

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

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

echo phpinfo();

【讨论】:

  • 这么多愚蠢的答案,谢谢!
【解决方案5】:

使用以下命令在 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

显示路径结果。

【讨论】:

  • 这不如php -i | grep 'php.ini' 之类的方法,因为它会找到any php.ini 并且不会告诉您您的PHP 安装使用的是哪一个。此外,当locate DB 不是最新的时,它可能会给出错误的结果。
  • locate 默认不安装在Ubuntu MATE 20.04(Focal Fossa)上。
【解决方案6】:

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

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

【讨论】:

  • 我比其他一些答案更喜欢这个。它不需要我创建、找到包含这些内容的 php 文件并在浏览器中加载页面。
【解决方案7】:

PHP 自带两个原生函数来显示加载了哪个配置文件:

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

阿帕奇:

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

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

命令行界面:

复制粘贴到你的终端:

php -r 'print php_ini_loaded_file(); print_r(php_ini_scanned_files());'

【讨论】:

  • 被低估的、彻底的和(几乎)正确的答案。我几乎将其切换为正确答案,但我担心php_ini_loaded_file 可能并不总是可用。
  • @zylstra 你的 php 版本是什么? php_ini_loaded_file 的文档说 php 版本 >= 5.2.4
  • @necromancer 现在不确定。忘记我检查的是哪个系统。 ://
【解决方案8】:
phpinfo();

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

php -i

【讨论】:

    【解决方案9】:

    在命令行中运行:

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

    【讨论】:

      【解决方案10】:

      尝试其中一种解决方案

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

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

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

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

      【讨论】:

      • 第 1、2 和 4 点容易出现多个安装问题;已经有很好的答案了。无需在此处添加不添加任何内容的答案。
      【解决方案11】:
      find / -name php.ini
      

      嘿...它对我有用!

      【讨论】:

      • 一方面,需要一段时间;对于两个,如果你有多个,你怎么知道哪个是实际使用的?
      • 没错,php --ini 有效,但这只是另一种选择:) 通常有一个 /etc/php5/cli/php.ini /etc/php5/apache2/php.ini /etc/php5/cgi/php.ini 并且通常你想要的很明显。 (cli, apache, cgi)
      • 这不是一个好的解决方案,因为我们并不打算找到磁盘上的所有 php.ini 文件。
      【解决方案12】:

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

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

      【讨论】:

        【解决方案13】:

        对于SAPI:php-fpm

        没有任何必要创建 php.info 文件(无论如何,让世界阅读它并不是一个好的策略)。在命令行上:

        php-fpm -i | more
        

        在其输出的某处,它会显示这一行:

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

        这里有一个更完整的解释: How to Figure out Your PHP Configuration Parameters without info.php

        【讨论】:

          猜你喜欢
          • 2021-02-02
          • 2011-03-04
          • 1970-01-01
          • 2017-05-07
          • 2012-11-30
          • 2011-08-22
          • 2014-12-14
          • 2012-05-04
          相关资源
          最近更新 更多