解決的思維和上次連線到 Oracle 的問題很像(上次處理 Oracle 的心得:[PHP] 如何使用 PHP 的 OCI8 連線至 Oracle):
- 先確認 php.ini 裡,有把指定資料庫的 extension 取消註解。
- 確認 extension 資料夾裡有 php.ini 指定要讀取的 dll 檔。
- 確定指定資料庫 (Oracle / Sybase) 的核心 dll 有沒有在系統參數的 PATH 資料夾裡。
(有的人會建議放在 C:\Windows\System32,有的人會說把檔案放在某個資料夾再把該路徑設定到 PATH,是一樣的道理。)
這次遇到的情況是先看到了這行錯誤訊息:
PHP Fatal error: Call to undefined function sybase_min_client_severity()
所以到 php.ini 把 Sybase 的註解取消掉(把原本前面的分號拿掉):
extension=php_sybase_ct.dll
不過取消註解、重新啟動 Apache 以後,用 phpinfo() 把 PHP 目前的設定資訊印出來看,Sybase 也沒啟用成功,同時 php 的 error.log 還跑出這行:
PHP Warning: PHP Startup: Unable to load dynamic library 'C:/php/ext/php_sybase_ct.dll' - 找不到指定的模組。 in Unknown on line 0
找到《加入其他extensions 功能 (ex: Sybase)》這篇文章,猜測是和上次一樣的情況:要在 PATH 裡找得到資料庫核心 DLL。安裝了 Sybase Client 後,系統會自動在環境變數的 PATH 中加入 Sybase 的資料夾,就能讓 PHP 讀到關鍵的 libcs.dll 與 libct.dll。
令我心碎的是,因為我的 Apache + PHP 環境當初是安裝 Zend Server,根據 "--with-sybase-ct in Zend Server 5.0(.2)" 這篇文章的內容看來,Zend Server 當初編譯時是沒有把 Sybase 編進去的。
只好重新設定安裝 Apache & PHP 了……
文章標籤
全站熱搜
留言列表