今天在64位Red Hat Enterprise Linux AS release 4 .7上编译PHP5.2.6出错,mysql是使用的RPM方式安装的,PHP编译代码如下:
1
2
3
4
|
. /configure --prefix= /usr/local/php --with-mysql --with-apxs2= /usr/local/apache/bin/apxs --with-openssl --with-curl -- enable -xml --with-mcrypt --with-ttf -- enable -magic-quotes -- enable -fastcgi -- enable -mbstring --with-iconv -- enable -mbstring --with-gd --with-jpeg- dir --with-png- dir --with-zlib- dir -- enable -sysvsem出现以下错误:checking for specified location of the MySQL UNIX socket... no
checking for MySQL UNIX socket location... no
configure: error: Cannot find libmysqlclient under /usr .
Note that the MySQL client library is not bundled anymore!
|
通过查找libmysqlclient,发现是在/usr/lib64/mysql/目录内的libmysqlclient.so.16.0.0做的软连接,PHP默认是去的 /usr/lib/搜索,所以没有找到.找到问题了就好解决了.
类似的问题还有:
1
|
/usr/lib/libjpeg .so -> /usr/lib64/libjpeg .so
|
解决方法:
1.
1
|
cp -rp /usr/lib64/mysql/libmysqlclient .so.16.0.0 /usr/lib/libmysqlclient .so
|
2.
1
2
3
4
|
/usr/lib64/libmysqlclient .so -> libmysqlclient.so.16.0.0 /usr/lib/libmysqlclient .so -> /usr/lib64/libmysqlclient .so
checking whether to enable embedded MySQLi support… no
checking for mysql_set_server_option in -lmysqlclient… no
configure: error: wrong mysql library version or lib not found. Check config.log for more information
|
经过测试后, 发现如下解决方案:
(php-xxxxx为php文件名, 代表路径)
1
2
3
4
5
6
|
# cd /usr/local/src/php-xxxxx/ext/mysqli
# yum -y install mysql-devel
# /phpize
# ./configure –with-php-config= /php-config –enable-embedded-mysqli=shared –enable-shared
# make
# make install
|
这时屏幕会打印mysqli.so生成的路径, 在php.ini里加载就好啦
1
|
/usr/bin/ld : cannot find -lmysqlclient
|