编译MariaDB和PHP仍会提供标头不匹配消息

时间:2016-11-06 11:48:53

标签: php mariadb

我编译了MariaDB和PHP,但在尝试连接时仍然收到以下消息:Warning: mysqli_connect(): Headers and client library minor version mismatch. Headers:100118 Library:50716

我的MariaDB版本为mariadb-10.1.18

我使用命令构建它:

cmake \
  -DCMAKE_INSTALL_PREFIX=/home/stephane/programs/mariadb/install \
  -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  -DMYSQL_DATADIR=/home/stephane/programs/mariadb/install/data \
  -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/home/stephane/programs/mariadb/install/boost \
  -DMYSQL_UNIX_ADDR=/home/stephane/programs/mariadb/install/tmp/mariadb.sock;

make;

make install;

chmod 755 scripts/mysql_install_db;
scripts/mysql_install_db --defaults-file=/home/stephane/programs/mariadb/install/etc/my.cnf \
  --no-defaults \
  --explicit_defaults_for_timestamp \
  --basedir=/home/stephane/programs/mariadb/install \
  --datadir=/home/stephane/programs/mariadb/install/data \
  --tmpdir=/home/stephane/programs/mariadb/install/tmp \
  --lc-messages-dir=/home/stephane/programs/mariadb/install/share

我的PHP版本是php-5.6.20

我用命令构建它:

./configure \
  --prefix=/home/stephane/programs/install \
  --with-config-file-path=/home/stephane/programs/php-5.6.20/ \
  --with-mysqli=/home/stephane/programs/mariadb/install/bin/mysql_config \
  --with-pdo-mysql=/home/stephane/programs/mariadb/install;

make;

make install;

然后我的PHP应该使用已编译的MariaDB提供的MariaDB驱动程序。应该没有版本问题。

但是在命令行中,php -i命令显示:

$ php -i | grep "Client API"
Client API library version => 5.7.16
Client API header version => 10.1.18-MariaDB
Client API version => 5.7.16

我从未在此5.7.16版本中指定任何位置。我猜是MariaDB给出了它。我需要在某处指定它吗?如果是这样,怎么样?我错过了什么?

1 个答案:

答案 0 :(得分:0)

我的PHP配置只使用了这一个--with-mysqli=/home/stephane/programs/mariadb/install/bin/mysql_config选项。通过不使用其他--with-mysql选项,我离开MySql以选择其默认驱动程序,即mysqlnd本机驱动程序(nd)。这个本机驱动程序不是我在编译MySql时编译的驱动程序,它是由PHP提供的驱动程序。因此版本不匹配。

当我然后使用这两个选项时,如:--with-mysql=/home/stephane/programs/mariadb/install --with-mysqli=/home/stephane/programs/mariadb/install/bin/mysql_config我的PHP然后使用在编译MySql期间编译的驱动程序。这次可能没有版本不匹配。