2013-01-18 50 views
5

我試圖用PHP5連接到Sybase數據庫。我相信我已經成功地將PHP編譯爲PDO_DBLIB,因爲phpinfo()在PDO驅動程序中列出了dblib,並且freetds編號爲pdo_dblib如何通過PHP連接到Sybase

然而,當我嘗試測試連接,我得到一個錯誤閱讀:

'PDOException' with message 'could not find driver'

我想使用此代碼連接到服務器我的局域網上:

$dbh = new PDO("sybase:host=192.168.1.xxx;dbname=[database-name]", '[user]', '[pass]'); 

任何建議將不勝感激!

+0

看來你沒有安裝,並在php.ini 啓用驅動,你可以試試這個實驗司機: HTTP:// PHP .net/manual/en/ref.pdo-dblib.php – shark555

回答

0

PDO不起作用,或者至少沒有PDO Sybase支持php。在Windows上,你可以使用ODBC,並且PDO_SQLSRVPDO_ODBC,它可能聽起來很奇怪,但它應該工作。

第二個選項,我會推薦它,是直接連接到Sybase(SQLAnywhere的),但你需要安裝SQL Anywhere PHP Module

+0

Zdenek Machek,感謝您訪問SQL Anywhere PHP模塊的鏈接。 – zwiebelspaetzle

+0

我正在嘗試使用SQL Anywhere PHP模塊,但是當我啓動httpd時,出現此錯誤:「無法加載SQLAnywhere客戶端庫,請確保可以在您的LD_LIBRARY_PATH環境變量中找到libdbcapi_r.so。 我在我的httpd.conf文件中添加了「SetEnv LD_LIBRARY_PATH/opt/sqlanywhere12/lib64」。但是,phpinfo仍然會將Apache環境LD_LIBRARY_PATH顯示爲/ usr/local/apache2/lib。 有什麼建議嗎? – zwiebelspaetzle

+0

是的,您的機器上需要安裝Sybase SqlAnywhere或至少SqlAnywhere客戶端,並且需要將此庫添加到系統路徑中,請參閱「echo $ PATH」 –

0

如果您在使用Ubuntu,你可以把裏面envvars中的LD_LIBRARY_PATH,似乎閱讀。 ..仍然試圖找到一種方法來讓它堅持在基於RHEL的系統上...... Windows我不太確定我希望你可以在我的電腦下設置一個系統變量 - >屬性 - >高級選項等等等等

如果正在使用基於RHEL的系統,在httpd restart腳本中包含: export LD_LIBRARY_PATH =/path/to/library /可能會更好(請檢查它是否爲加載/ etc/sysconfig/httpd,如果是的話,在那裏添加行 - 現在重新啓動Apache,你應該看到一些活動。

0

您應該使用dblib代替sybase,像這樣:

$dbh = new PDO("dblib:host=192.168.1.xxx;dbname=[database-name]", '[user]', '[pass]');