解決的思維和上次連線到 Oracle 的問題很像(上次處理 Oracle 的心得:[PHP] 如何使用 PHP 的 OCI8 連線至 Oracle):

  1. 先確認 php.ini 裡,有把指定資料庫的 extension 取消註解。
  2. 確認 extension 資料夾裡有 php.ini 指定要讀取的 dll 檔。
  3. 確定指定資料庫 (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 了……

 

 

arrow
arrow
    文章標籤
    php sybase
    全站熱搜
    創作者介紹
    創作者 小攻城師 的頭像
    小攻城師

    小攻城師的戰場筆記

    小攻城師 發表在 痞客邦 留言(0) 人氣()