PHP8安装MySQL xdevapi扩展

要在PHP中使用MySQL8的文档存储Document Store,需要配置mysql_xdevapi扩展。配置过程比较复杂,依赖颇多,详细步骤如下。

环境:CentOS8 + PHP8 + MySQL8

首先安装gcc gcc-c++

yum install -y gcc gcc-c++

由于使用的是CentOS8系统,所以安装的gcc版本是8.4.1。CentOS7下安装的是4.8.5,太老了,不支持c++17,所以CentOS建议使用8。

安装boot bison

yum install -y boost boost-devel  bison bison-runtime
#下面两个可能会装不上,不过没关系
yum install -y boost-static bison-devel

安装protobuf

wget https://github.com/protocolbuffers/protobuf/releases/download/v3.16.0/protobuf-all-3.16.0.tar.gz

tar -xvzf protobuf-all-3.16.0.tar.gz

#重命名下,不然下面会重名
mv protobuf-3.16.0 protobuf-all-3.16.0

cd protobuf-all-3.16.0

./configure

make

make install

编译php protobuf扩展

wget https://pecl.php.net/get/protobuf-3.16.0.tgz

tar -xvzf protobuf-3.16.0.tgz

cd protobuf-3.16.0

/path/to/phpize 

./configure -with-php-config=/path/to/php-config

make

make install

安装MySQL xdevapi扩展

wget https://pecl.php.net/get/mysql_xdevapi-8.0.26.tgz
tar -xzvf mysql_xdevapi-8.0.26.tgz 

解压之后,要修改一个文件,不然会一直报错找不到protobuf,这是源码的锅。

configure: error: protobuf not found, please install it in system, consider use of --with-protobuf or setting MYSQL_XDEVAPI_PROTOBUF_ROOT

打开config.m4,第416行

AC_CHECK_HEADER("google/protobuf/any.h", [], [PROTOBUF_INCLUDES_NOT_FOUND=1])

改为

AC_CHECK_HEADER("google/protobuf/any.h", [], [PROTOBUF_INCLUDES_NOT_FOUND1=1])

开始编译

cd mysql_xdevapi-8.0.26
/path/to/phpize
./configure -with-php-config=/path/to/php-config
make
make install

执行成功后会显示编译好的扩展所在目录。

修改php.iniprotobufmysql_xdevapi扩展加上

[protobuf]
extension = /path/to/protobuf.so

[mysql_xdevapi]
extension = /path/to/mysql_xdevapi.so

重启php-fpm服务即可在phpinfo中看到这俩扩展了。

1 thought on “PHP8安装MySQL xdevapi扩展”

Leave a Comment

豫ICP备19001387号-1