【问题标题】:How can I determine the current config of php-fpm?如何确定 php-fpm 的当前配置?
【发布时间】:2018-05-28 07:51:19
【问题描述】:

我想确定“已加载”的当前配置。这些将是此处列出的所有值:http://php.net/manual/en/install.fpm.configuration.php

phpinfo() 不会返回这些值。

【问题讨论】:

  • 示例:/etc/php/7.0/fpm/php-fpm.conf
  • 他们返回时是ini_get_all() 还是ini_get(...)
  • 另外,你到底想解决什么问题?得到值后你会做什么?
  • 这是个好问题。我在php -i 输出中的任何地方都看不到 max_children。我也尝试过检查ini_get('pm'),它返回 FALSE。

标签: php fpm


【解决方案1】:

如果您可以访问服务器,请尝试,具体取决于 php 版本

sudo php-fpm7.0 -tt
sudo php-fpm7.x -tt
sudo php-fpm7.4 -tt

它测试当前配置文件并显示配置参数值(也是默认值)。 如果发生修改并且 php-fpm 尚未重新加载,显示的值可能与当前运行的配置不同。

仅在 php-fpm 7.4 上测试过

注意:命令的输出会出现标准错误,这使得管道到 grepless 之类的东西不方便。考虑到这一点:

php-fpm7.4 -tt 2>&1 | grep access

【讨论】:

  • 强调:“displayed values 可以不同于 current running config,如果发生了修改并且没有重新加载 php-fpm。”
【解决方案2】:

据我所知,有两种方法可以查看

  1. 使用 ps 命令定位并读取 fpm 配置文件
root@c56686e9854c:/# ps aux | grep php-fpm | grep 大师

根 1 0.0 0.9 455112 37324 ? ss 12:01 0:00 php-fpm:主进程 (/usr/local/etc/php-fpm.conf)

  1. 使用php-fpm自带的命令
root@c56686e9854c:/# php-fpm -tt

[2020 年 3 月 29 日 12:31:23] 通知:[www]

...

[2020 年 3 月 29 日 12:31:23] 注意:下午 = 动态

[2020 年 3 月 29 日 12:31:23] 通知:pm.max_children = 5

[2020 年 3 月 29 日 12:31:23] 通知:pm.start_servers = 2

[2020 年 3 月 29 日 12:31:23] 通知:pm.min_spare_servers = 1

[2020 年 3 月 29 日 12:31:23] 通知:pm.max_spare_servers = 3

...

【讨论】:

    【解决方案3】:

    Axi 的解决方案并不完整,因为 -tt 标志仅显示文件系统中存在的当前配置文件的值,而不是 当前 加载到内存中的值。这些值不一定相同。例如,如果对文件进行了编辑,但未重新加载 fpm。

    我找到的最佳解决方案是在 Apache 或 Nginx 中启用 FPM 状态页面。虽然没有显示所有变量,但总比没有好。

    【讨论】:

    • 我在帖子中添加了一个精确度,因为它似乎不够清晰
    • 遗憾的是,即使这样也没有显示例如“pm.max_children”或“pm.min_spare_servers”的运行时配置。
    【解决方案4】:

    你可以使用:

    parse_ini_file(php_ini_loaded_file())
    

    【讨论】:

    • 这不会向您显示 pm.max_children 或 pm.min_spare_servers、pm.max_spare_servers 等设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    相关资源
    最近更新 更多