关于linux:Dude,我的php.ini在哪里?

Dude, where's my php.ini? (server config)

几年前,我在我维护的Linux服务器上安装了Apache2.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 Thingamagic之外,其他人可以使用GUI来修补DB2。(我尝试了一个小的PHP脚本,该脚本失败,表明IBM_DB2函数不可用)。

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


在命令行上执行:

1
php --ini

你会得到如下信息:

1
2
3
4
5
6
7
8
9
10
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文件并添加以下代码:

1
<?php phpinfo(); ?>

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

按操作更新:

  • 以前接受的答案对你来说可能更快更方便,但并不总是正确的。请参阅对该答案的评论。
  • 请注意本答案中提到的更方便的替代方案

  • 这对我很有用:

    1
    php -i | grep 'php.ini'

    您应该看到如下内容:

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

    附笔只获取php.ini路径

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


    在命令窗口类型中

    1
    php --ini

    它会告诉你路径

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

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

    1
    echo phpinfo();


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

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


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

    1
    2
    3
    4
    5
    [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

    或者换个方法试试

    埃多克斯1〔5〕它显示路径结果


    将告诉您它的位置,或从命令行

    1
    php -i


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

    • php_ini_loaded_文件返回加载的ini文件
    • php_ini_scanned_files返回从附加ini目录解析的.ini文件列表

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

    阿帕奇:

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

    CLI:

    复制粘贴到终端:

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


    1
    find / -name php.ini

    嘿。。。对我有用!


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

    1
    2
    3
    4
    $ -> 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

    不需要创建php.info文件(不管怎样,把它留给世界阅读并不是一个好的策略)。在命令行上:

    1
    php-fpm -i | more

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

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

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


    尝试此解决方案之一

  • 在您的find / -name"php.ini"型终端中

  • 在您的终端类型php -i | grep php.ini中。它应该显示文件路径为Configuration File (php.ini) Path => /etc

  • 如果您可以访问一个PHP文件,请在编辑器(记事本)中打开它。并在后面的新行phpinfo();中插入下面的代码。会告诉你php.ini的位置
  • 您也可以在交互模式下与PHP交谈。只需输入php -a。php启动后的终端和phpinfo();类型。

  • 对于定位php.ini文件,已经提到了几种有效的方法,但是如果您遇到此页面是因为希望在bash脚本中对其进行一些操作:

    埃多克斯1〔6〕