我编译了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给出了它。我需要在某处指定它吗?如果是这样,怎么样?我错过了什么?
答案 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期间编译的驱动程序。这次可能没有版本不匹配。