美文网首页
php无法加载bcmath扩展

php无法加载bcmath扩展

作者: X1_blog | 来源:发表于2021-11-30 19:03 被阅读0次

    背景:

    线上某台机器安装php的bcmath扩展后可以使用命令行运行, 但是服务偶发异常, 在使用某些功能的时候偶发出现错误

    PHP Startup: Unable to load dynamic library 'php_extension_dir/bcmath.so' - /lib64/libc.so.6: version `GLIBC_2.14' not found (required by php_extension_dir/bcmath.so)"
    

    定位 :

    检查扩展情况:

    php - m | grep bcmath => 正常

    php -i | grep bcmath => 正常

    php -a > echo bcdiv(2,1,1); => 正常

    检查GLIBC_2.14系统依赖:

    ll /lib64/libc.so.6 => /lib64/libc.so.6 -> /lib64/libc-2.14.1.so 版本正常

    ll /lib64/libc-2.14.1.so => 文件存在

    strings /lib64/libc.so.6 | grep GLIBC_2.1 => 2.14存在

    检查启动方式:

    php -a > echo PHP_SAPI; => CLI

    解决方法 :

    kill -USER2 master进程号 (php > 5.3.3版本,fpm平滑重启并重新载入扩展和配置命令)

    检查异常情况 : 无异常

    补充:

    php 4种运行方式:
    1. CGI / fast - CGI

    2. CLI (命令行)

    3. apache module

    4. ISAPI (iis支持)

    使用 echo PHP_SAPI 查看当前使用的运行方式

    php-fpm 生命周期 : 创建到消亡

    查看php-fpm.conf , 或其引入的其他配置文件, 找到 pm 配置

    pm = static 固定子进程数量

    pm = ondemand 有需求时创建

    pm = dynamic 在max_children + start_servers的基础下动态伸缩

    pm.start_servers 启动时默认子进程数

    pm.min_spare_servers 最低空闲进程数

    pm.max_spare_servers 最大空闲进程数

    pm.max_children 允许最大子进程数

    pm.process_idle_timeout 大于这个空闲时间(秒)后, 子进程会被kill; 设置防止内存泄露

    如果子进程数小于pm.min_spare_servers, 会创建进程到pm.min_spare_servers 个

    如果子进程数大于pm.max_spare_servers , 会杀死大于pm.max_spare_servers个空闲进程

    如果子进程运行时间大于process_idle_timeout, 这个进程会被杀死

    如果进程数超过pm.max_children个, 可能出现50X错误

    php-fpm.conf 配置解析: https://www.cnblogs.com/chunguang/p/5538478.html

    相关文章

      网友评论

          本文标题:php无法加载bcmath扩展

          本文链接:https://www.haomeiwen.com/subject/iigdxrtx.html