在 Zend Studio for Eclipse 內建 PHP 除錯環境中直接呼叫 mysql_connect() 等 MySQL 函式會出現「Call to undefined function」錯誤。原因是內建 PHP 環境未載入 php_mysql.dll 擴充模組。本文提供完整設定步驟解決此問題。
Fatal error: Call to undefined function mysql_connect() in ...
Zend Studio 安裝路徑下的內建 PHP 環境:
D:\Program Files\Zend\Zend Studio for Eclipse - 6.0.0\plugins\org.zend.php.debug.debugger.win32.x86_5.2.12.v20071210\resources\php5\php.ini
注意: 具體路徑因版本而異,請在安裝目錄下搜尋 php.ini。
php.ini 同目錄下建立 ext 資料夾C:\php\ext\)複製 php_mysql.dll 到此 ext 資料夾php_mysqli.dll; 設定擴充模組目錄(使用絕對路徑)
extension_dir = "D:\Program Files\Zend\Zend Studio for Eclipse - 6.0.0\plugins\org.zend.php.debug.debugger.win32.x86_5.2.12.v20071210\resources\php5\ext"
; 載入 MySQL 擴充模組
extension = php_mysql.dll
; 若需要 mysqli
; extension = php_mysqli.dll
重新啟動 IDE 後,內建 PHP 除錯器將載入新設定,MySQL 函式即可正常呼叫。
<?php
$link = mysql_connect('localhost', 'root', 'password');
if ($link) {
echo "MySQL 連線成功!";
mysql_close($link);
} else {
echo "連線失敗:" . mysql_error();
}
?>
| 問題 | 原因與解決 |
|---|---|
| 仍報 undefined function | 檢查 extension_dir 路徑是否正確、php_mysql.dll 是否存在於該目錄 |
| 啟動報錯 "Unable to load dynamic library" | DLL 版本與 PHP 版本不符(TS/NTS、VC6/VC9、x86/x64 需一致) |
| 需要 PDO_MySQL | 同步複製 php_pdo_mysql.dll 並啟用 extension=php_pdo_mysql.dll |
| Linux/Mac 環境 | 副檔名為 .so,路徑通常為 /usr/lib/php/extensions/ |
mysql_* 函式,請改用 mysqli 或 PDO_MySQLcomposer 管理相依套件,避免環境差異問題