今天在64位Red Hat Enterprise Linux AS release 4 .7上編譯PHP5.2.6出錯,mysql是使用的RPM方式安裝的,PHP編譯代碼如下:
./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/搜索,所以沒有找到.找到問題了就好解決了.
類似的問題還有:
/usr/lib/libjpeg.so -> /usr/lib64/libjpeg.so
解決方法:
1.
cp -rp /usr/lib64/mysql/libmysqlclient.so.16.0.0 /usr/lib/libmysqlclient.so
2.
/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文件名, 代表路徑)
# 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裡加載就好啦
/usr/bin/ld: cannot find -lmysqlclient