使用 oci_connect 连接到 Oracle
Connecting to Oracle using oci_connect
我正在尝试使用 PHP 成功建立 Oracle 连接。
这是我的连接字符串的样子:
<?php
$conn = oci_connect("USER", "PASS", "LOSINGMINDHOST");
if (!$conn) {
$e = oci_error();
error_log(trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR));
}
oci_close($conn);
?>
出现以下错误:
Warning: oci_connect(): ORA-12170: TNS:Connect timeout occurred
指向 oci_connect 的行。
我在 Windows Server 2019 上。
php.ini 文件已更新为包括以下内容:
extension=oci8_12c
我已经确认上面的dll文件确实在如下列出的ext文件夹中:
php_oci8_12c.dll
不确定为什么 php.ini 文件不包含 dll 文件的全名。
服务器已安装Ocale 12g instant client 64bit。
我们已使用 tnsnames.ora 文件确认使用 ODBC 数据源管理器客户端的连接。
我们还有一个 listener.ora 文件,看起来像这样:
PROD_MIR =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (COMMUNITY = ttp.world)(PROTOCOL = TTP)(Host = LOSINGMINDHOST)(Port = 1524))
(ADDRESS = (COMMUNITY = ttp.world)(PROTOCOL = TTP)(Host = LOSINGMINDHOST)(Port = 1551))
(ADDRESS = (COMMUNITY = ttp.world)(PROTOCOL = TTP)(Host = LOSINGMINDHOST)(Port = 1538))
)
(CONNECT_DATA =
(SERVICE_NAME = PROD)
)
)
我们在服务器上添加了 TNS_ADMIN 路径到环境变量。
我们已经重启了服务,甚至重启了服务器。
正如文档 (https://www.php.net/manual/en/function.oci-connect.php) 所说:
oci_connect ( string $username , string $password [, string $connection_string [, string $character_set [, int $session_mode ]]] ) : resource
connection_string
Contains the Oracle instance to connect to. It can be an » Easy Connect string, or a Connect Name from the tnsnames.ora file, or the name of a local Oracle instance.
这是你的情况,请使用正确的 tnsnames.ora 连接名称。
我正在尝试使用 PHP 成功建立 Oracle 连接。
这是我的连接字符串的样子:
<?php
$conn = oci_connect("USER", "PASS", "LOSINGMINDHOST");
if (!$conn) {
$e = oci_error();
error_log(trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR));
}
oci_close($conn);
?>
出现以下错误:
Warning: oci_connect(): ORA-12170: TNS:Connect timeout occurred
指向 oci_connect 的行。
我在 Windows Server 2019 上。
php.ini 文件已更新为包括以下内容:
extension=oci8_12c
我已经确认上面的dll文件确实在如下列出的ext文件夹中:
php_oci8_12c.dll
不确定为什么 php.ini 文件不包含 dll 文件的全名。
服务器已安装Ocale 12g instant client 64bit。
我们已使用 tnsnames.ora 文件确认使用 ODBC 数据源管理器客户端的连接。
我们还有一个 listener.ora 文件,看起来像这样:
PROD_MIR =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (COMMUNITY = ttp.world)(PROTOCOL = TTP)(Host = LOSINGMINDHOST)(Port = 1524))
(ADDRESS = (COMMUNITY = ttp.world)(PROTOCOL = TTP)(Host = LOSINGMINDHOST)(Port = 1551))
(ADDRESS = (COMMUNITY = ttp.world)(PROTOCOL = TTP)(Host = LOSINGMINDHOST)(Port = 1538))
)
(CONNECT_DATA =
(SERVICE_NAME = PROD)
)
)
我们在服务器上添加了 TNS_ADMIN 路径到环境变量。
我们已经重启了服务,甚至重启了服务器。
正如文档 (https://www.php.net/manual/en/function.oci-connect.php) 所说:
oci_connect ( string $username , string $password [, string $connection_string [, string $character_set [, int $session_mode ]]] ) : resource
connection_string Contains the Oracle instance to connect to. It can be an » Easy Connect string, or a Connect Name from the tnsnames.ora file, or the name of a local Oracle instance.
这是你的情况,请使用正确的 tnsnames.ora 连接名称。