前言
近期在維護Ubuntu 機器內的 Laravel 專案時,執行 CLI 指令時出現以下 PHP 警告:1
PHP Warning: Module 'pdo_sqlsrv' is already loaded in Unknown on line 0
此警告的意思是 pdo_sqlsrv
擴充套件被 PHP 重複載入了,雖然功能正常不影響使用,但每次執行都會跳警告,有點煩人😅
這邊紀錄一下排查與解決的過程,避免下次又踩雷。
問題排查
透過以下指令查看目前 CLI 模式載入的設定檔:1
php --ini
可以發現:1
2/etc/php/8.2/cli/conf.d/20-pdo_sqlsrv.ini
/etc/php/8.2/cli/conf.d/30-pdo_sqlsrv.ini
這兩個檔案其實都是 symlink 指向同一個原始檔案 /etc/php/8.2/mods-available/pdo_sqlsrv.ini
代表模組被載入了兩次,導致出現 Warning。
這種情況常見於安裝 PHP 套件後,系統在 conf.d/ 中建立了多個連結,例如你跑過 phpenmod 或 apt install php8.2-pdo-sqlsrv 等自動化流程。
解決方式
✅ 移除多餘的設定檔
保留其中一個(建議保留數字較小的,例如 20-pdo_sqlsrv.ini
),刪除另一個:
(conf.d/*-pdo_sqlsrv.ini
的數字代表載入順序,愈小的數字愈早被載入)1
2sudo rm /etc/php/8.2/cli/conf.d/30-pdo_sqlsrv.ini
sudo rm /etc/php/8.2/fpm/conf.d/30-pdo_sqlsrv.ini
✅ 重啟服務
如果有使用 FPM 或 Apache,記得重啟:1
2sudo systemctl restart php8.2-fpm
sudo systemctl restart apache2
✅ 再次確認是否正常
重新執行一次原本有警告的指令,例如:1
php artisan migrate
確認畫面不再出現 Warning 即可
結語
這類 Warning 雖然不影響實際功能,但對於除錯時的 log 資訊會造成干擾。良好的設定整潔度可以讓維運更有效率!
希望這篇筆記能幫助之後的自己或其他遇到相同問題的人 🙌