使用 Oracle 的 11g XE(免费赠品)配置了 CentOS 5.6 服务器,在本指南的帮助下安装了 OCI8,并获得了与数据库通信的预先存在的(自定义)PHP 应用程序,没有任何问题。调用该服务器 Dev 并开始下一个构建。
我现在使用的 Prod 服务器与 Dev 一样,只是 Oracle 11G 是标准版,而不是免费版。其他一切,据我所知,相同。绝对是相同的 OCI RPM。
警告:ocilogon() [function.ocilogon]:ORA-12154:TNS:无法解析 /var/www/html/blah/blah.php 中指定的连接标识符
我确定我有一个“环境”问题,但我不知道如何解决它。
Oracle、Apache、OCI8 和 PHP 都在同一个盒子上。
什么有效:
tnsping orcl
从产品服务器。sqlplus user@orcl
从产品服务器。phpconfig();
显示所有 OCI8 的东西。比较 Dev 和 Prod 的结果,它们是相同的。- 我还可以从 VPN 另一端的 XP 客户端通过 Toad 进行连接。
我只是无法让 PHP 与数据库对话。快把我逼疯了!
在 Prod 服务器上进行了全局搜索,只有一个 tnsnames.ora 文件。这是它的样子:
ORCL = (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED) (SERVICE_NAME = orcl)
)
我应该提供什么会有所帮助吗?只需发表评论。
我真的不想在 Prod 盒子上弄平并重新开始......请帮我解决这个问题!
[编辑]
我猜它没有找到听众。出于好奇,我停止了监听服务并确认错误没有任何变化。
根据要求,这里有一些代码。
引发我上面提到的错误的代码:
$dbh = OCILogon($vars[oracle_login], $vars[oracle_pwd], $vars[oracle_instance]);
变量在另一个文件中设置:
...
但我们可以跳过它。在将它们复制并粘贴到这里时,我花了一点时间来排列括号 - 并找到了一个额外的。
错字!
多哈。/掌心。