PHP无法连接,但SqlPlus可以

发布于 2025-01-03 22:06:19 字数 429 浏览 0 评论 0原文

现在有一个问题困扰着我的细胞。

我想连接一个 oracle 服务器。我可以使用 sqlplus 命令行轻松连接到它。

当我尝试使用 PHP 连接到 oracle 数据库时,它失败了。问题是,我们在另一个数据中心有相同的设置; PHP 机器正在尝试连接到 oracle 数据库。我在两台 PHP 机器上运行了完全相同的代码,并以相同的方式配置了 php。

PHP1 可以通过 sqlplus 和 php 连接到 Oracle1。

PHP2 使用 sqlplus 连接到 Oracle2,但不能使用 PHP。

有防火墙和一些端口阻塞正在进行。我目前的解释是,php2 用于连接到 oracle2 的端口不是默认的 1521,它被阻止了。

我得到的 ora 错误是:

ORA-06413:连接未打开。

有什么想法吗?

Here is an issue that is boggling my cells right now.

There is an oracle server that I want to connect to. I can easily connect to it using the sqlplus command line.

When I try to connect to the oracle database with PHP though, it fails. Here is the catch, we have the same setup in another datacenter; a PHP machine is trying to connect to an oracle database. I've run the exact same code, configured php identically on both PHP machines.

PHP1 can connect to Oracle1 with both sqlplus and through php.

PHP2 connects to Oracle2 with sqlplus but NOT with PHP.

There are firewalls and some port blocking going on. My current explanation is that the port php2 is using to connect to oracle2 is not the default 1521 and it is being blocked.

The ora error I get is :

ORA-06413 : Connection not open.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

伤感在游骋 2025-01-10 22:06:19

该错误表明由于某种原因无法解析 TNS 连接描述符。这通常是 Oracle 在尝试构建连接信息时进行的系统调用的问题。

您的程序名称、用户名或机器名称中是否有括号?

您是否在 64 位 Windows 操作系统上运行 32 位 Oracle 客户端?

尝试从命令行使用 tnsping 实用程序。这告诉你什么?

The error indicates that the TNS connect descriptor can't be parsed for one reason or another. It's usually a problem with a system call made by Oracle when it's attempting to build connection information.

Are there any brackets in your program name, username, or machine name?

Are you running a 32-bit Oracle client on a 64-bit Windows OS by any chance?

Try using the tnsping utility from the command line. What does that tell you?

杯别 2025-01-10 22:06:19

根据提供的信息,我最好的猜测(将其范围缩小到编程原因)是从问题机器发送的数据库名称、用户名或密码包含转义序列($, \t< /code>、\a\r 等),当在 PHP 脚本中作为字符串文字输入时,它们会发生变化。

From the info provided, my best guess (narrowing it to programming causes) is that either the database name, username or password sent from the problem machine contains an escape sequence ($, \t, \a, \r, etc.) that, when typed in your PHP script as a string literal, becomes altered.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文