2013-07-18 103 views
0

我試圖通過PHP從網絡中的另一臺計算機連接到Ubuntu 13服務器上的Oracle 11gR2 Xe。 我使用的安裝和例子其次從oci_connect喜歡這裏:通過PHP連接到Ubuntu 13服務器上的Oracle 11gR2 XE

<?php 
query_cities(); 
function query_cities() { 
if { 
$c = oci_connect("hr", "hr", "localhost:1521/XE"); 
; 
} else { 
echo "No connection"; } 
?> 

或像另一個例子:

$c = oci_connect("hr", "hr", "192.168.1.33:1521/XE"); 

我已經啓用通過SQLPLUS

SQL> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE); 

在DB的遠程連接我已經解鎖了用戶HR

SQL> ALTER USER hr ACCOUNT UNLOCK; 

,但我只能找到通過IPv6從SQL開發人員在網絡上的一些連接,如netstat的:

TCP6 0 0 192.168.1.33:1521 192.168.1.2:57563 ESTABLISHED 14843/oracleXE

TCP6 0 0 192.168.1.33:1521 192.168.1.2:59314 ESTABLISHED 15665/oracleXE

不是從我的瀏覽器,他們不是在tcp IPv4。瀏覽器窗口保持白色..沒有反應,沒有反應,也沒有錯誤信息。 這應該是由於TNSLR IP只在IPv6上有效,或者oci_connect公式的非常好,或者我缺少其他一些東西?

我希望得到任何幫助在這個問題

+0

不要在瀏覽器窗口中測試。默認情況下,所有錯誤都會導致空白頁面。你必須回到錯誤日誌來查看錯誤。這就是你所看到的 - 錯誤在錯誤日誌中。我希望它是你沒有安裝或啓用PHP中的oci8。 – kainaw

+0

我很困惑看到來自netstat的IPv4地址的tcp6連接。這是什麼時候發生的? – Dubu

+0

關於IPv6的接口是:eth0 Link encap:Ethernet HWaddr 1c:6f:65:d8:7d:b7 inet addr:192.168.1.33 Bcast:192.168.1.255 Mask:255.255.25 inet6 addr:fe80 :: 1e6f: 65ff:fed8:7db7/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1096637 errors:0 dropped:259 overruns:0 frame:0 TX packets:70353 errors:0 dropped:0 overruns :0載體:0 碰撞:0 txqueuelen:1000 RX字節:172696685(172.6 MB)TX字節:14938460(14.9 MB) 和端口都是這樣 –

回答

0

好的,收到意見的基礎上,尋求在日誌中的錯誤,我已經找到了消息「*有什麼問題與您的系統 - 請檢查ORACLE_HOME和LD_LIBRARY_PATH設置,並指向正確的目錄*」和我決定去通過安裝Oracle InstantClient的複雜過程,並重新安裝OCI8封裝,型號之後,從st-curriculum.oracle - 具有非常小的修改,具體如下:

  1. Oracle 11g R2 XE數據庫和Apache2/PHP服務器ha已經在Ubuntu 13.10服務器上安裝了apriori並準備了系統(包括prereqiuzite,交換文件,內核參數,內存泄漏錯誤恢復,庫和chkconfig模擬器),如許多帖子中所述。

  2. 我停下來的Apache2服務器

    service apache2 stop 
    

    ,並開始DRCP連接池在st-curriculum.oracle.com

  3. 我創建了一個名爲PHPHOL用戶(和備用安裝Oracle的示例HR模式,如果尚未在oracle安裝完成)

  4. 接下來,我從OTN下載了基本版和SDK即時客戶端軟件包:oracle.com/technetwork/database/features/instant-client/index-100365.html d解包$ ORACLE_HOME中的軟件包,(/u01/app/oracle/product/11.2.0/xe)

  5. 然後我從pecl.php下載了OCI8軟件包。淨/包/ OCI8和安裝在/ opt/OCI8作爲instantclient

    phpise 
    ./configure --with-oci8=instantclient,/u01/app/oracle/product/11.2.0/xe/instantclient_11_2 
    make/make install 
    
  6. 我設置Oracle環境路徑作爲oracle technote

    export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe   
    LD_LIBRARY_PATH=/u01/app/oracle/product/11.2.0/xe/instantclient_11_2 
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH=/opt/oci8/modules 
    
    nano /etc/ld.so.conf.d/oracle.conf 
    

    ,並插入:/ U01 /應用/ ORACLE /產品/ 11.2.0/XE/instantclient_11_2

    nano /etc/ld.so.conf.d/oci8.conf 
    

    和插入中:/ opt/OCI8 /模塊

    nano /etc/ld.so.conf.d/shared.conf 
    

    並插入安裝的共享擴展位置:/ usr/lib中/ PHP5/20121212

    ldconfig 
    
  7. 接着我編輯的配置文件php.ini中添加:延長= oci8.so,設置日期。 timezone指令並添加了OCI8 1.4擴展類:oci8.connection_class = MYPHPAPP(有關st-curriculum.oracle.com示例,請參閱上面的鏈接)

  8. 我建立了鏈接:$ ORACLE_HOME/instantclient_11_2/libclntsh.so .11.1。以點$ ORACLE_HOME/instantclient_11_2/libclntsh.so

  9. 重新啓動Oracle數據庫和Apache服務的Ubuntu 13.10服務器上

    /etc/init.d/oracle-xe force-reload 
    service apache2 start 
    
  10. 我的phpinfo驗證()啓用的OCI8,和我做了連接PHP文件,如:

    $conn = oci_connect("hr", "hr", "localhost/xe"); 
    

或像從st-curriculum.oracle.com例子之一。

從我通過瀏覽器連接到Oracle數據庫Ubuntu的服務器在同一個網絡上的另一臺計算機,我有

連接到Oracle!

我希望這個幫助

相關問題