2013-07-18 63 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!

我希望这个帮助

相关问题