无法将我的 RDS Oracle 实例连接到 PHP 服务器



我在 Amazon RDS 上设置了一个 Oracle 数据库,并尝试用 PHP 连接到它。

我相当确定我的连接字符串是正确的,因为我使用 sqlplus 连接并且能够检索数据。该服务器是Amazon Linux服务器,但是我也尝试使用其他服务器进行连接并收到错误:

我是否需要在服务器或数据库服务器中进行更多设置,我刚刚开始使用 AWS,不确定是否需要执行其他操作。

ORA-12154:TNS:无法解析指定的连接标识符...第 19 行。

这是我的测试代码:

<html>
    <head>
        <title>PHP Test</title>
    </head>
    <body>
        <?php
            echo "OCI Test<br>";
            $tns = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xyz.abc.us-west-2.rds.amazonaws.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)));";
            echo "<pre>$tns</pre>n";
            $username = "xxx";
            $password = "yyy";
            $db = @oci_connect($username, $password, $tns);
            if (!$conn)
            {
                $e = oci_error();
                trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
            }
            $sql = "select * from city";
            $stmt = OCIParse($db, $sql);
            if(OCIExecute($stmt))
            {
                while(OCIFetchInto($stmt, $row, OCI_RETURN_NULLS))
                {
                        echo $row[0]. "-" . $row[1]."<br>";
                }
            }
            OCIFreeStatement($stmt);
        ?>
    </body>
</html>

编辑:亚马逊Linux服务器也只是什么都不显示,而我有权访问的另一台服务器出现错误,是否有配置更改?

$tns变量看起来是错误的。

尝试

$tns = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xyz.abc.us-west-2.rds.amazonaws.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)));";

最新更新