簡體   English   中英

TNS:權限被拒絕:RHEL 8 中的 ORA-12546

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM