【发布时间】:2022-08-10 02:34:00
【问题描述】:
我在 PHP 中创建了一个数据库连接测试以连接到远程 oracle 数据库。但它会抛出类似的错误
Failed to connect to Oracle
Array ( [code] => 12546 [message] => ORA-12546: TNS:permission denied [offset] => 0 [sqltext] => )
**CODE**
$db = \"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host)(PORT=1567))(CONNECT_DATA=(SERVICE_NAME=servicename)))\";
$conn=oci_connect(\"username\",\"pwd\",$db);
If (!$conn)
echo \'Failed to connect to Oracle\';
else
echo \'Succesfully connected with Oracle DB\';
$e = oci_error(); // For oci_connect errors pass no handle
oci_close($conn);
Oracle 即时客户端路径/usr/lib/oracle/19.11/client64/lib
oci8 路径/usr/lib64/php/modules/oci8
有什么线索可以解决这个错误吗?
很少的信息
Installed packages
PHP 7.2
php-ldap
php-cli
php-gd
php-pear
php-odbc
php-common
php-xml
php-pdo
php-process
php-mbstring
oci8
oracle-instantclient-19.11
oracle-instantclient-devel-19.11
oracle-instantclient-sqlplus-19.11
所有这些包都在远程服务器上。我还没有设置任何变量,但是我给了 oracle-instantclient lib oci8.so 文件 755 权限。
-
您可以使用有关您安装的内容和位置的信息更新您的问题吗? PHP 是在远程计算机上还是与数据库在同一台计算机上?您的连接字符串是什么格式 - 它是一个简单的名称(即网络别名),还是完整的连接描述符(带有很多括号),或者它是 \'Easy Connect\' 语法(如 \"my_hostname/my_service_name \")?您的 PHP 进程是否对 tnsnames.ora 文件具有读取权限?您设置了哪些 Oracle 环境变量,如 ORACLE_HOME、TNSADMIN 等?
-
@ChristopherJones 你好,我在我的问题中添加了更多细节。你能调查一下吗。
-
任何东西都可以连接到那个远程数据库吗? SQL*Plus 是否连接?
-
SQL Plus 也无法连接
-
从谷歌搜索来看,这听起来像是数据库方面的问题。请与您的 DBA 确认 Oracle 网络侦听器已正确启动,并且实际上可以访问 DB 软件安装中的 tnsnames.ora 文件。
标签: php linux oracle oci8 rhel8