【发布时间】:2013-07-18 18:51:45
【问题描述】:
我正在尝试通过 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;
但我只能通过 SQL Developer 在网络上找到一些通过 IPv6 的连接,例如 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 公式足够好,或者我缺少其他一些?
我将不胜感激有关此问题的任何帮助
【问题讨论】:
-
不要在浏览器窗口中测试。默认情况下,所有错误都将导致空白页。您必须返回错误日志才能查看错误。这就是您所看到的 - 错误在错误日志中。我预计是您没有在 PHP 中安装或启用 oci8。
-
我很困惑地看到来自 netstat 的 tcp6 连接与 IPv4 地址。什么时候发生?
-
关于 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 范围:链接 UP BROADCAST RUNNING MULTICAST MTU:1500 指标:1 RX 数据包:1096637 错误:0 丢弃:259 超限:0 帧:0 TX 数据包:70353 错误:0 丢弃: 0 超限:0 载波:0 冲突:0 txqueuelen:1000 RX 字节:172696685 (172.6 MB) TX 字节:14938460 (14.9 MB),端口是这样的
-
netstat -tupan 活动 Internet 连接(服务器和已建立) tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 904/mysqld tcp 0 0 127.0.0.1:55948 127.0.1.1:1521 ESTABLISHED 9152/xe_pmon_X tcp6 0 0 127.0.0.1:8005 :::* LISTEN 1260/java tcp6 0 0 :::8009 :::* LISTEN 1260/java tcp6 0 0 :::8080 :::* LISTEN 8947/tnslsnr tcp6 0 0 :::80 :::* LISTEN 7900/apache2 tcp6 0 0 :::1521 :::* LISTEN 8947/tnslsnr tcp6 0 0 :::8081 :::* LISTEN 1260/java tcp6 0 0 ::: 22 :::* LISTEN 884/sshd tcp6 0 0 :::443 :::* LISTEN 7900/apache2 tcp6 0 0 127.0.1.1:1521 127.0.0.1:55948 已建立 8947/tnslsnr
-
我明白日志的意思,它们看起来像这样的错误:[error] [client 192.168.1.10] PHP Warning: oci_connect(): OCIEnvNlsCreate() failed。您的系统有问题 - 请检查 ORACLE_HOME 和 LD_LIBRARY_PATH 是否已设置并指向正确的目录
标签: php oracle ipv6 ubuntu-server