我需要将oracle 11g数据库与我的xampp服务器连接,我需要本地和远程连接。为此,我首先安装了oracle 11g express版本并下载了instantclient-basic-nt-11.2.0.4.0
并将解压缩的文件夹instantclient_11_2
放在C:\
中然后我设置了环境变量(系统变量)和我的路径值看起来像path=C:\oraclexe\app\oracle\product\11.2.0\server\bin;C:\instantclient_11_2
。
然后我从;
文件中删除了extension=php_oci8.dll
和extension=php_oci8_11g.dll
之前的php.ini
。然后我首先尝试连接我的本地数据库:
$tns_turjo = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.13)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))'; // tns of another pc
$tns_ishrak = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.18)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))'; // tns of my pc
$conn = oci_connect('system', 'cibl123*#', $tns_turjo);
if($conn) {
echo "connected";
}
else {
echo "not";
}
当我通过$tns_ishrak
时,它回显connected
但是当我尝试访问另一台PC的oracle数据库时,即使用$tns_turjo
然后它回显not
,错误是
Message: oci_connect(): ORA-12170: TNS:Connect timeout occurred
我在连接到另一台电脑时也更改了用户名和密码。
N.B。每当我启动Apache时从php.ini文件启用.dll扩展名后,我会在xampp中收到弹出警告Module 'oci8' is already loaded
如何解决远程连接问题?
答案 0 :(得分:0)
您不需要安装InstantClient; Oracle XE包含完整的Oracle客户端。
远程连接不起作用的原因有很多,但最常见的(根据我的经验)是:
您可以在没有PHP的情况下连接到远程PC吗?您是通过SQL * Plus还是仅仅tnsping
命令尝试过的?
N.B。每当我启动Apache时从php.ini文件启用.dll扩展名后,我会在xampp中收到弹出警告
Module 'oci8' is already loaded
这很明显:你试图不止一次加载OCI模块。您应该只启用一个 OCI模块,这样如果您在php.ini
文件中出现类似下面的内容,那就是问题所在:
extension=php_oci8.dll
extension=php_oci8_11g.dll
只应启用php_oci8_11g.dll
,因为您已经安装了该版本。