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

解決 PHP CLI 模式下無法連接 MySQL 的問題:php.ini 路徑衝突排查實錄

     編輯:PHP 綜合知識

問題背景

同事 xjb 遇到一個經典問題:透過 Web 方式(Apache)執行 PHP 腳本可正常連接 MySQL,但在 DOS 命令列(CLI)下執行同一支腳本卻報錯:

Fatal Error: undefined function mysql_connect()

環境資訊

  • 作業系統:Windows Server 2003
  • PHP 版本:5.2.0
  • MySQL 版本:5.0
  • Apache 版本:2.0

php.ini 中已啟用 extension=php_mysql.dll,測試腳本僅包含簡單的連線測試。

現象對比

執行方式 結果
Web (https://localhost/test.php) 顯示「連接成功」
CLI (d:/php/php.exe test.php) 報錯:undefined function mysql_connect()

排查過程

編寫 phpinfo() 腳本分別在兩種環境下執行,仔細比對輸出資訊,發現關鍵差異:

  • Web 環境:Configuration File (php.ini) Path = C:\WINDOWS\php.ini
  • CLI 環境:Configuration File (php.ini) Path = D:\php\php.ini

原來兩個目錄下都存在 php.ini,而 D:\php\php.ini 未啟用 MySQL 擴展模組。CLI 模式讀取的是安裝目錄下的設定檔,導致擴展未載入。

解決方案

  1. 刪除或重新命名安裝目錄下的 php.ini(如 D:\php\php.ini)
  2. 保留系統目錄下的 php.ini(如 C:\WINDOWS\php.ini)作為唯一設定檔
  3. 重新執行 CLI 腳本,問題解決

經驗總結

在 Windows 下安裝 PHP 時,將安裝目錄下的 php.ini 複製到 Windows 目錄後,務必刪除或重命名原安裝目錄下的 php.ini,避免不同執行環境(Web/CLI)載入不同設定檔導致行為不一致。

問題的成因往往非常簡單,但排查過程卻相當耗時。善用 phpinfo() 比對環境差異,是解決此類問題的關鍵技巧。

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