少用但始终都会碰到 - 查看当前配置文件

  • 作者:KK

  • 发表日期:2020.05.27


要点速读

  1. Web运行方式 执行phpinfo(),在里面找到Configuration File (php.ini) Path这部分。

  2. 命令行 执行php --ini | grep Loaded即可,有可能为空。


问题背景

有时候上手一个陌生的环境,想改一下配置文件,于是就需要用这些方法查看一下配置文件在哪里。


Web运行方式 下查看配置文件

这里所谓的 Web运行方式 其实一般是指结合 Apache、Nginx 下运行起来的 FastCGI模式。

查看方式就是执行phpinfo()查看输出内容,在里面找到Configuration File (php.ini) Path这部分即可


命令行 下查看配置文件

执行php --ini | grep Loaded即可

然而也有可能会输出为 None

这时候就可以换成php --ini直接查看所有加载了的配置文件,根据下图的信息显示,这回 php 是自动扫描了 /usr/local/etc/php/conf.d 目录下的所有 *.ini。所以这些文件都是被加载使用了的配置文件哦。


两种运行模式的配置文件不一定相同

其实任何运行实例都可以单独指定其它配置文件,所以不能以为 web 下执行phpinfo()看到的配置路径,就一定是命令行下的配置路径,这是新手要注意的一个细节。

  • 详解

    每一次 PHP 的运行都可以单独指定不同的配置文件,比如在命令行这样执行php -c /a/b/c/php.ini -r "echo ini_get('memory_limit');",就是通过 -c 参数指定了一个配置文件,再运行echo ini_get('memory_limit');这句代码。

    而每一次命令行的 php 命令,都是重新加载配置文件重新运行的,所以修改配置后,重新运行命令即可生效。

    然而 web 模式下,是当 php-fpm 运行起来,跟 Apache、Nginx 这些 Web 服务器对接起来的时候就加载了配置文件,如果修改后想要再生效,要重新启动 php-fpm。

    其中 php-fpm 也可以单独指定它的配置文件路径,只是往往它都跟 CLI 模式共用同一个路径而已(如 /usr/local/php/etc/php.ini)。