少用但始终都会碰到 - 查看当前配置文件 ¶
作者:KK
发表日期:2020.05.27
要点速读 ¶
Web运行方式 执行
phpinfo()
,在里面找到Configuration File (php.ini) Path
这部分。命令行 执行
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)。