![](/img/trans.png)
[英]ORA-12546: TNS:permission denied error connection to remote oracle server
[英]TNS:permission denied : ORA-12546 in RHEL 8
我在 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 instaclient 路徑/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 權限。
我在這個路徑 ORACLE_HOME/network/admin 中添加了 tnsnames.ora。 添加了以下連接字符串,瞧,它對我有用
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host)(PORT=1567))(CONNECT_DATA=(SERVICE_NAME=servicename)))
這個解決方案幫助我解決了這個問題。 也許它也會幫助你。
當 SELinux 服務在 Linux 服務器上處於活動狀態時,Apache 服務器無法連接到在服務器外部運行的服務。 因此,您必須通過執行以下命令來更改此配置:
setsebool -P httpd_can_network_connect on
這個命令幫助我解決了這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.