首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

解決 PHP 編譯錯誤:Cannot find libmysqlclient under /usr

     編輯:PHP 綜合知識

問題背景

在 64 位元的 Red Hat Enterprise Linux AS 4.7 系統上編譯 PHP 5.2.6 時,若 MySQL 是透過 RPM 方式安裝,執行 ./configure 可能會出現以下錯誤:

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!

錯誤原因在於 64 位元系統下 MySQL 的客戶端庫文件 libmysqlclient.so 位於 /usr/lib64/mysql/ 目錄,而 PHP 編譯腳本預設只會搜尋 /usr/lib/,導致找不到庫文件。

解決方案

方法一:建立軟連結(快速測試可用)

將 64 位元庫文件連結到 32 位元預設搜尋路徑:

cp -rp /usr/lib64/mysql/libmysqlclient.so.16.0.0 /usr/lib/libmysqlclient.so

或建立軟連結:

ln -s /usr/lib64/mysql/libmysqlclient.so.16.0.0 /usr/lib/libmysqlclient.so

方法二:安裝開發套件並重新編譯 mysqli 擴展(推薦)

更標準的做法是安裝 mysql-devel,並單獨編譯 mysqli 擴展:

# 進入 PHP 源碼的 mysqli 擴展目錄
cd /usr/local/src/php-xxxxx/ext/mysqli

# 安裝 MySQL 開發庫
yum -y install mysql-devel

# 使用 phpize 準備編譯環境
/phpize

# 配置編譯選項(請根據實際路徑調整 php-config 路徑)
./configure --with-php-config=/usr/local/php/bin/php-config --enable-embedded-mysqli=shared --enable-shared

# 編譯並安裝
make
make install

編譯成功後,螢幕會顯示生成的 mysqli.so 路徑,將其加入 php.ini 中的 extension 指令即可載入。

常見相關問題

同樣的庫路徑問題也可能出現在其他庫上,例如 libjpeg:

/usr/lib/libjpeg.so -> /usr/lib64/libjpeg.so

解決思路相同:確保 32 位元兼容路徑下存在對應的庫文件或軟連結。

總結

64 位元 Linux 系統編譯 PHP 時遇到 Cannot find libmysqlclient 錯誤,核心在於庫文件路徑不匹配。建議優先採用方法二,安裝 mysql-devel 並重新編譯 mysqli 擴展,這樣更符合系統包管理規範,也能避免後續升級帶來的連結失效問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved