要在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.ini
把protobuf
和mysql_xdevapi
扩展加上
[protobuf]
extension = /path/to/protobuf.so
[mysql_xdevapi]
extension = /path/to/mysql_xdevapi.so
重启php-fpm
服务即可在phpinfo中看到这俩扩展了。
1 thought on “PHP8安装MySQL xdevapi扩展”