RockyLinux+PHP8安裝pdo_sqlsrv,使用自編譯 PHP 擴充模組標準流程 - 蔡大痣 - WP開發 X SEO搜尋優化

文章分類/

RockyLinux+PHP8安裝pdo_sqlsrv,使用自編譯 PHP 擴充模組標準流程

191 瀏覽
2025-06-24 更新

這篇文章記錄自編譯 PHP 擴充模組-pdo_sqlsrv標準流程,怕自已忘記XD

方案一: 使用套件指令安裝

執行以下指令安裝PHP連結MSSQL的相關套件

sudo dnf install php-devel
sudo dnf install unixODBC-devel (如果失敗可以先執行sudo dnf config-manager –set-enabled crb)
sudo pecl install channel://pecl.php.net/pdo_sqlsrv-5.10.1

上述會跑一堆指令後會看到以下訊息

Build process completed successfully

Installing ‘/usr/lib64/php/modules/pdo_sqlsrv.so’

install ok: channel://pecl.php.net/pdo_sqlsrv-5.10.1

Extension pdo_sqlsrv enabled in php.ini

查看你的php模組目錄/usr/lib64/php/modules,應該就下有新增一個
pdo_sqlsrv.so

而且php.ini也會寫入

extension=”pdo_sqlsrv.so”

最後請重新啟動環境

sudo systemctl restart php-fpm
php -m | grep pdo_sqlsrv

方案二:pdo_sqlsrv自編譯

一開始測試方案一發現除了一些套件沒有安裝補安裝後,後續遇到php cli (php -v)與php-fpm (phpinfo();的結果)版本不一致問題 Orz

Step1:統一好 php 版本與路徑

  • 你系統裡可能同時存在:
    • 系統內建 /usr/bin/php(ex: 8.0.30 / 8.2.6)
    • 自編譯 /usr/local/php/bin/php(ex: 你實際 php-fpm 用的版本)
  • 擴充模組的編譯必須跟你 php-fpm 用的 php 版本完全一致

Step2: 必須先確認好「你要用的 PHP 是哪個版本」

which php
php -v
php --ini
php -i | grep extension_dir

👉 你真正要用來擴充的版本,應該是跟 php-fpm 相同的那份 PHP binary

Step3: 確保 PATH 先切換正確(關鍵)

export PATH=/usr/local/php/bin:$PATH


👉 讓你所有 php, phpize, php-config, pecl 都會優先執行你自編譯的 PHP 版本
which php
which phpize
which php-config

Step4: 開始擴充模組編譯時,嚴格指定正確的 php-config

cd /usr/local/src
wget https://pecl.php.net/get/pdo_sqlsrv-5.12.0.tgz
tar zxvf pdo_sqlsrv-5.12.0.tgz
cd pdo_sqlsrv-5.12.0

/usr/local/php/bin/phpize
./configure –with-php-config=/usr/local/php/bin/php-config
make
sudo make install

Step5: php.ini extension_dir 要正確指向自編譯 extension 目錄

編輯vim php.ini

確認你的使用路徑: 以 phpinfo() 結果為最準,會看到以下的資訊

Configuration File (php.ini) Path/usr/local/php/etc
Loaded Configuration File/usr/local/php/etc/php.ini

#擴充模組目錄,預設的基本模組是不需要在搬到這個指定資料夾的
extension_dir = “/usr/local/php/lib/php/extensions/no-debug-non-zts-20220829”

#新增這次新編譯的模組
extension=pdo_sqlsrv.so

Step6: 每次修改 php.ini 之前,先用 php -m 測試驗證

php -m
php -r “print_r(PDO::getAvailableDrivers());”

Step7: 重啟 php-fpm

sudo systemctl restart php-fpm

最後重點覆習!!

先統一 php -v 版本環境,確保 phpize/php-config 路徑正確,再開始編譯任何擴充模組,才能避免 API mismatch。

✦ 虎鯨 OrcaBiz SEO 優化專業團隊 ✦

專業 SEO 公司幫助你將流量累積成看得見的業績,成為長期有效的最強業務!

載入中…
沒有更多相關文章可閱讀