我正在尝试通过PHP从网络中的另一台计算机连接到Ubuntu 13服务器上的Oracle 11gR2 Xe。 我正在使用oci_connect之后的安装和示例,例如:
<?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
启用了DB中的远程连接SQL> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);
我解锁了用户HR
SQL> ALTER USER hr ACCOUNT UNLOCK;
但我只能在网络上通过IPv6找到一些来自SQL Developer的连接,比如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 :(得分:0)
好的,根据收到的建议来查找日志中的错误,我发现消息“*你的系统出了问题 - 请检查是否设置了ORACLE_HOME和LD_LIBRARY_PATH并指向正确的目录*”我决定在st-curriculum.oracle的模型之后,通过非常小的修改,完成安装Oracle InstantClient和重新安装OCI8软件包的复杂过程,如下所示:
Oracle 11g R2 XE数据库和Apache2 / PHP服务器已经在Ubuntu 13.10服务器和系统上安装了apriori(使用prereqiuzite,交换文件,内核参数,内存泄漏错误恢复,库和chkconfig模拟器),如上所述很多帖子。
我停止了apache2服务器
service apache2 stop
并启动DRCP连接池,如st-curriculum.oracle.com
我创建了一个名为PHPHOL的用户(并且备用安装Oracle的示例HR模式,如果尚未在oracle安装中完成)
接下来,我从OTN下载了Basic和SDK Instant Client软件包:oracle.com/technetwork/database/features/instant-client/index-100365.html并解压缩了$ ORACLE_HOME中的软件包,(/ u01 /app/oracle/product/11.2.0/xe)
然后我从pecl.php.net/package/oci8下载了OCI8包,并作为instantclient安装在/ opt / oci8中
phpise
./configure --with-oci8=instantclient,/u01/app/oracle/product/11.2.0/xe/instantclient_11_2
make / make install
我将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/app/oracle/product/11.2.0/xe/instantclient_11_2
nano /etc/ld.so.conf.d/oci8.conf
并插入:/ opt / oci8 / modules
nano /etc/ld.so.conf.d/shared.conf
并插入已安装的共享扩展位置:/ usr / lib / php5 / 20121212
ldconfig
接下来我编辑了配置文件php.ini来添加:extension = oci8.so,设置date.timezone指令并添加了OCI8 1.4扩展类:oci8.connection_class = MYPHPAPP(用于st-courses .oracle.com示例,请参阅上面的链接)
我建立了链接:$ ORACLE_HOME / instantclient_11_2 / libclntsh.so.11.1。指向$ ORACLE_HOME / instantclient_11_2 / libclntsh.so
在Ubuntu 13.10服务器上重启Oracle数据库和Apache服务
/etc/init.d/oracle-xe force-reload
service apache2 start
我在phpinfo()中验证了oci8已启用,我创建了connect.php文件,如:
$conn = oci_connect("hr", "hr", "localhost/xe");
或者喜欢st-curriculum.oracle.com示例中的那个。
从同一网络上的另一台计算机,我通过浏览器连接到Ubuntu服务器上的oracle数据库,我已经
连接到Oracle!
我希望这个帮助