【问题标题】:Unable to compile PHP 5.2 with mysqli extension无法使用 mysqli 扩展编译 PHP 5.2
【发布时间】:2013-11-28 12:28:17
【问题描述】:

我正在编译 PHP 5.2 版本,带有 mysql 扩展名 mysqli

下面是步骤

  1. 配置

sudo ./configure --with-mysqli=/opt/mysql/server-5.1/bin/mysql_config

[运行良好的mysql版本是5.1,我也尝试过最新的]

  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 tomysql_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 tomysql_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 tomysql_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 tomysql_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 tomysql_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 tomysql_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 tomysql_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 tomysql_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 tomysql_slave_query' collect2: ld 返回 1 个退出状态 make: * [sapi/cgi/php-cgi] 错误 1

请告诉我解决办法

【问题讨论】:

  • 为什么还要构建 5.2 版?它不再受支持。为什么不升级到受支持的版本?
  • 我们有一个旧项目仍在这个版本上运行
  • 我之前遇到过这个问题(必须构建过时的 PHP 版本)。首先确保您构建的是 5.2 的最新版本。我不确定它最近是否获得了任何类型的旧版支持,因此您可能会被档案中的旧版本卡住。

标签: php mysqli php-extension


【解决方案1】:

我的猜测是您包含来自错误版本的 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)

编辑:请注意配置标志非常重要,否则您仍然会包含错误的标题(基于您的系统包含路径)

【讨论】:

    【解决方案2】:

    我已经运行了这个命令

    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/

    【讨论】:

      【解决方案3】:

      移除默认的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
      

      我很好!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-25
        • 2018-07-06
        • 2011-04-29
        • 1970-01-01
        • 1970-01-01
        • 2015-04-09
        • 2013-08-30
        • 1970-01-01
        相关资源
        最近更新 更多