我正在使用mysql扩展名mysqli
编译PHP 5.2版下面是步骤
sudo ./configure --with-mysqli = / opt / mysql / server-5.1 / bin / mysql_config
[它工作正常的mysql版本是5.1我也尝试了最新]
制作
[在拍下吼叫错误之后]
-lmysqlclient -lz -lcrypt -lnsl -lm -lxml2 -lcrypt -lxml2 -lxml2 -lxml2 -lcrypt -o sapi / cgi / php-cgi
ext / mysqli / mysqli_repl.o:在函数zif_mysqli_disable_reads_from_master':
/usr/local/src/php5-build/php-5.2.5/ext/mysqli/mysqli_repl.c:43: undefined reference to
中mysql_disable_reads_from_master'
ext / mysqli / mysqli_repl.o:在函数zif_mysqli_disable_rpl_parse':
/usr/local/src/php5-build/php-5.2.5/ext/mysqli/mysqli_repl.c:59: undefined reference to
中mysql_disable_rpl_parse'
ext / mysqli / mysqli_repl.o:在函数zif_mysqli_enable_reads_from_master':
/usr/local/src/php5-build/php-5.2.5/ext/mysqli/mysqli_repl.c:76: undefined reference to
mysql_enable_reads_from_master'中
ext / mysqli / mysqli_repl.o:在函数zif_mysqli_enable_rpl_parse':
/usr/local/src/php5-build/php-5.2.5/ext/mysqli/mysqli_repl.c:93: undefined reference to
中mysql_enable_rpl_parse'
ext / mysqli / mysqli_repl.o:在函数zif_mysqli_master_query':
/usr/local/src/php5-build/php-5.2.5/ext/mysqli/mysqli_repl.c:111: undefined reference to
mysql_master_query'中
ext / mysqli / mysqli_repl.o:在函数zif_mysqli_rpl_parse_enabled':
/usr/local/src/php5-build/php-5.2.5/ext/mysqli/mysqli_repl.c:130: undefined reference to
中mysql_rpl_parse_enabled'
ext / mysqli / mysqli_repl.o:在函数zif_mysqli_rpl_probe':
/usr/local/src/php5-build/php-5.2.5/ext/mysqli/mysqli_repl.c:147: undefined reference to
mysql_rpl_probe'中
ext / mysqli / mysqli_repl.o:在函数zif_mysqli_rpl_query_type':
/usr/local/src/php5-build/php-5.2.5/ext/mysqli/mysqli_repl.c:168: undefined reference to
mysql_rpl_query_type'中
ext / mysqli / mysqli_repl.o:在函数zif_mysqli_slave_query':
/usr/local/src/php5-build/php-5.2.5/ext/mysqli/mysqli_repl.c:207: undefined reference to
mysql_slave_query'中
collect2:ld返回1退出状态
make: * [sapi / cgi / php-cgi]错误1
请让我知道解决方案
答案 0 :(得分:1)
我的猜测是你的MySQL头文件来自错误版本的MySQL客户端。您尝试与PHP 5.2一起构建的php-mysql扩展已超过5年,并且需要来自相应MySQL版本的库和头文件。只是做'apt-get install mysql-client mysql-client-dev'之类的东西会安装一个最新版本,所以你可能需要下载一个旧版本并自己构建它并告诉./configure在哪里找到mysql头文件(类似./configure-with-mysqli = / path / to / old / headers)
编辑:请注意,配置标志非常重要,否则您仍会包含错误的标头(基于您的系统包含路径)
答案 1 :(得分:0)
我已经运行了这个命令
sudo ./configure --disable-all --with-mysql = / opt / mysql / server-5.1 / --with-mysqli = / opt / mysql / server-5.1 / bin / mysql_config
并且它在我之前的命令中工作我错过了/opt/mysql/server-5.1 /
答案 2 :(得分:0)
删除默认的mysqlclient-dev:
sudo apt-get remove libmysqlclient-dev
安装libmysqlclient-dev_5.6.25
sudo wget http://launchpadlibrarian.net/212189147/libmysqlclient-dev_5.6.25-0ubuntu1_amd64.deb
sudo dpkg -i libmysqlclient-dev_5.6.25-0ubuntu1_amd64.deb
wget http://launchpadlibrarian.net/212189159/libmysqlclient18_5.6.25-0ubuntu1_amd64.deb
sudo dpkg -i libmysqlclient18_5.6.25-0ubuntu1_amd64.deb
我很好!