2013-03-05 119 views
1

我試圖通過PDO連接到的Oracle 11g Express Edition的數據庫在PHP。我安裝了xampp,我也有一個(可能是)工作的pdo_oci擴展,它也在phpinfo()中顯示。我的數據庫工作,我可以通過一個SQL控制檯和/或SQL開發人員連接到它。 我已經啓用了擴展php_pdo_oci.dll腓嘗試通過PDO連接到Oracle 11g - 未知錯誤

我的代碼是:

$db_username = "system"; 
$db_password = "mypass"; 
$db = "oci:dbname=xe"; 
$conn = new PDO($db,$db_username,$db_password); 

我得到以下錯誤:

致命錯誤:未捕獲的異常 'PDOException' 有消息「SQLSTATE []: pdo_oci_handle_factory:<>(ext \ pdo_oci \ oci_driver.c:579)'in ...

所以這真的沒有告訴任何事情。

如果我嘗試通過oci_connect與此代碼連接並啓用擴展php_oci8_11g.dll(和禁用PDO擴展),則:

$conn = oci_connect('system', 'mypass', 'localhost/XE'); 

我得到這個錯誤:

警告:oci_connect ()[function.oci-connect]:OCIEnvNlsCreate()失敗。也有一些是錯誤的與您的系統 - 請檢查路徑包括在... Oracle即時客戶端庫的目錄

那麼,什麼是Oracle即時客戶端?我只下載了Oracle Express Edition,並添加了ORACLE_HOME和LD_LIBRARY_PATH作爲環境變量,並且還添加了PATH路徑。我錯過了什麼?

預先感謝您

+0

不'的phpinfo()'顯示擴展加載? – Rob 2013-03-05 23:13:00

+0

嗨!是的,我有這個:「啓用OCI 8的PDO驅動程序和更高版本的\t」 – user2001951 2013-03-05 23:33:41

回答

1

好吧,我想我固定的,所以如果其他人需要它:

我下載Oracle即時客戶端。在此之後,它仍抱怨我應該在PATH中佔據一席之地,即使它已經在那裏。

所以我複製的即時客戶端的所有文件(或許你並不需要所有的,但無論如何)到Apache/bin目錄,瞧它的工作。