美文网首页
升级PHP7时couchbase扩展导入的bug

升级PHP7时couchbase扩展导入的bug

作者: StanNAN | 来源:发表于2017-08-27 21:07 被阅读0次

这两天在弄php7.1的docker镜像,使用的系统是Ubuntu 16.04;

PHP7发布到现在大部分的扩展都可以直接用pecl安装,但也要注意一些变化,比如couchbase。

首先说明一下,5.6的安装步骤是怎样的:

  • 使用apt-get 安装php5.6,以及各个库
  • 依次使用pecl安装几个扩展如(yar、couchbase)
  • 增加各个扩展的配置到/etc/php/{version}/mod_available,如couchbase.ini,内容如下:
extension=couchbase.so
  • 使用phpenmod couchbase,使得配置生效(其实是在真实的配置地址下,建立软连接,如生成文件/etc/php/7.1/cli/conf.d/20-couchbase.ini
  • 如果是php-fpm,需要重启才能生效

以上步骤,除了couchbase,都正常使用,当使用php -v命令时,出现报错,其中json_globals可能是json的其他函数:

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20160303/couchbase.so' - /usr/lib/php/20160303/couchbase.so: undefined symbol: json_globals in Unknown on line 0

导致整个原因是因为,couchbase在v2.0.0版本时修改了扩展的载入类型

PHP_ARG_ENABLE(couchbase, whether to enable Couchbase support,
[ --with-couchbase   Include Couchbase support])

改成了

PHP_ARG_WITH(couchbase, whether to enable Couchbase support,
[  --with-couchbase   Include Couchbase support])

这个修改导致couchbase的导入和内置扩展同个级别,但是couchbase依赖json,导致载入couchbase时报错

通过修改couchbase.ini,增加注释priority = 30可以避免这个报错

; configuration for php couchbase module
; priority = 30
extension=couchbase.so

这样通过phpenmod命令生效的配置,是30-couchbase.ini文件,导入顺序在内置扩展之后,就不会出现报错了;
另外这个就是书写配置的习惯问题了,如果不是PHP自带的扩展,在写扩展配置文件时,都添加priority = {value},value>20,这样就不会因为依赖问题,导致报错;

相关文章

  • 升级PHP7时couchbase扩展导入的bug

    这两天在弄php7.1的docker镜像,使用的系统是Ubuntu 16.04; PHP7发布到现在大部分的扩展都...

  • PHP7升级总结

    /* 记录两个在php7升级过程中踩的坑。*/ 一、扩展的不兼容 问题现象: 1、升级完php7的机器中,有几台从...

  • phpstudy启用php_intl之后发生“计算机中丢失*.d

    最近新升级了新版的phpstudy,想试试php7感觉如何。 结果发现,安装完成之后,当开启了php_intl扩展...

  • docker加载本地镜像

    打包镜像docker save couchbase > couchbase.tarxz -9 couchbase....

  • Couchbase安装与配置

    Couchbase安装 Couchbase配置

  • PHP7安装Memcached扩展

    安装依赖库 libmemcached 安装php7的memcached扩展 启动扩展 修改配置文件 在末尾添加 重...

  • Redis安装

    Redis | phpredis 注意安装redis php扩展时,由于使用的是php7版本所以当前文档提供的版本...

  • 2018-02-02

    PHP7 Memcached CAS 变化 服务器升级PHP7后发现一些Memcached的get和getMult...

  • redis安装的一波三折

    环境Mac OS、MAMP资料:redis扩展(如果是php7,则需要下载支持php7的版本,否则会报"php_s...

  • 安装memcached

    由于前文“Centos 7.2 yum安装php7”中升级了php到php7,导致之前可以正常使用的phpmyad...

网友评论

      本文标题:升级PHP7时couchbase扩展导入的bug

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