![](/img/trans.png)
[英]Codeigniter 3 + php 5.6 + xampp + sqlserver 2008 + win7 64x
[英]How to use oracle client 11.2 with php (xampp) on win7 x64
我剛剛在我的 win7 (x64) PC 上安裝了一個真實的 XAMPP 來編寫一些 PHP 腳本來連接到一個 oracle DB。 我還安裝了一個普通的 oracle 11.2.0 客戶端(PATH 和 ORACLE_HOME 設置正確)。 客戶端用於我的所有其他工作,沒有任何問題。
當我嘗試連接到 Oracle DB 時,PHP 失敗並出現Fatal error: Call to undefined function oci_connect() in
. 我記得幾年前我在 x32 winXP PC 上做同樣的事情時,我不得不在我的 php.ini 中啟用“oci8-extensions”。 但是我當前的 xampp 在php/ext
文件夾中沒有這些 dll(只有一個php_oci8_12c.dll
,它在 apache 啟動時拋出了幾個未知函數的錯誤,並且它是針對 oracle 12 而不是 11)並且 php.ini 也說它們是只有即時客戶端需要。
;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
;extension=php_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client
此外,這個SO-questions表明在普通客戶端上使用評論擴展是行不通的(我也試過)。
我試圖用谷歌搜索解決方案,但所有“解決方案”都是“安裝 win32 即時客戶端並啟用擴展”。 但是我不能這樣做,因為我的大部分 QA 工作都需要安裝和配置的 11.2.0 客戶端,而且我的 php/ext 文件夾中沒有 .dll
我還嘗試將 ociw32.dll 從 client/bin 文件夾復制到 php/ext 文件夾,但 apache 說它不是 PHP 庫。
那么如何在不安裝 win32 Oracle Instant Client 並破壞我當前設置的情況下,讓 PHP oracle 庫在 x64 win7 上使用 oci8 進行 XAMPP 呢?
編輯:我還嘗試了PHP:安裝手冊(發布:samantha dot vincent at gmail dot com)中描述的步驟,包括更改我的 apache-http.conf 也沒有幫助。
我也很困惑我的phpinfo()
-Output 正如它所說的
Configure Command "--with-pdo-oci=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared" "--with-oci8-12c=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared"
我終於找到了解決辦法:
我從“PECL :: PAckage :: oci8 :: 2.0.8” (在我的例子中是32位線程安全DLL)下載了實際的OCI-DLL,然后刪除了;
從這一行
;extension=php_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client
我還在我的 apache 的 http.conf 中添加了以下幾行
SetEnv ORACLE_BASE "C:/oracle/"
SetEnv ORACLE_HOME "C:/oracle/product/11.2.0/client_1"
之后我重新啟動了 apache,確保我的連接別名可能放在我的tsnames.ora
,然后我可以使用 oci8 函數而不會出現任何問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.