安装 PHP 5.3 时出现 configure: error: Cannot find libmysqlclient under /usr.


作者: 我不是鱼 (2017-02-24 18:04) 分类: PHP   标签: libmysqlclient PHP 5.3

在安装 PHP 5.3,configure 的时候出现错误, configure 如下:

[root@lnmp php-5.3.29]# ./configure  --prefix=/usr/local/php5 --enable-fpm --with-mysql  --with-mysqli --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo

错误信息如下:

checking for MySQL support... yes
checking for specified location of the MySQL UNIX socket... no
configure: error: Cannot find libmysqlclient under /usr.
Note that the MySQL client library is not bundled anymore!

其实自己好肯定这些 MySQL 相关包都已经安装了的。那感觉应该就是路径问题,然后我进去 /usr 看了下,才恍然大悟。

[root@lnmp php-5.3.29]# ls /usr
bin  etc  games  include  lib  lib64  libexec  local  sbin  share  src  tmp
[root@lnmp php-5.3.29]#

PHP 5.3 应该是默认到 /usr/lib 下找用户库了,但我的系统是64位,用户库默认在 /usr/lib64,所以 /usr/lib64 才是正确的路径。其实 configure 中有这个选项直接指定库路径 --with-libdir, 至于用法可以参考 ./configure --help

[root@lnmp php-5.3.29]# ./configure --help | grep libdir
  --libdir=DIR            object code libraries [EPREFIX/lib]
  --with-libdir=NAME      Look for libraries in .../NAME rather than .../lib

Look for libraries in .../NAME rather than .../lib

所以用法是 

--with-libdir=lib64

能是 --with-libdir=/usr/lib64,这个路径是错的。

重新 configure

[root@lnmp php-5.3.29]# ./configure  --prefix=/usr/local/php5 --enable-fpm --with-mysql  --with-mysqli --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo --with-libdir=lib64

终于顺利通过,本以为可以很快安装完成,但在 make 的时候又出现了新问题:

ext/mysqli/mysqli.o: In function `php_local_infile_read':
 /usr/local/src/php-5.3.29/ext/mysqli/mysqli.c:1419: undefined reference to `client_errors'
 /usr/local/src/php-5.3.29/ext/mysqli/mysqli.c:1419: undefined reference to `client_errors'
 ext/mysqli/mysqli.o: In function `php_local_infile_init':
 /usr/local/src/php-5.3.29/ext/mysqli/mysqli.c:1372: undefined reference to `client_errors'
 ext/mysqli/mysqli.o: In function `php_local_infile_error':
 /usr/local/src/php-5.3.29/ext/mysqli/mysqli.c:1495: undefined reference to `client_errors'
 collect2: error: ld returned 1 exit status
 make: *** [sapi/fpm/php-fpm] Error 1

ext/mysqli/mysqli.c:1495: undefined reference to `client_errors'

貌似还是和之前 configure 的错误有关,但搞不懂为何 configure 通过但 make 通不过。网上也苦寻无果。最后无奈只能去掉   --with-mysqli 这个选项,然后在安装完 PHP 之后再新增这个扩展。

去掉后终于顺利通过,安装顺利完成。然后再安装 mysqli 扩展,PHP 5.3 的源码就已经包含了这个扩展的源码,进入 php-5.3.29/ext/mysqli ,用 phpize 安装,又或者直接用 pecl 安装。扩展的安装方法都是大同小异,这里不再赘述。

前一篇: VirtualBox 静态文件(js, css 等)无法更新并在最后出现乱码
后一篇: PHP 7.1 安装 ssh2 扩展


添加评论

昵称:


验证码