更新(2010 年 5 月 21 日)成功!
所以在 MUCH $head->desk()'ing 之后,我已经解决了。
请记住孩子们,请注意您使用的即时客户端版本,具体取决于虚拟化设置!
我一直在安装通用的 Instant Client(不知道我们的 ESX 服务器安装在 AMD 处理器上,而不是 Intel)并且在内部运行良好(CentOS 安装是 32 位,因为我们的内部 ESXi 服务器不是 64 位)。好吧,瞧瞧,即使您在 AMD64 上的虚拟化服务器上运行 32 位安装,安装什么即时客户端仍然很重要。
这是我想检查的最后一件事,但看起来,现在一切都运行良好。
我要感谢所有帮助我完成所有可能的测试以弄清楚这一点的人,但最后,我没有意识到虚拟化的差异是我的错。
更新(2010 年 5 月 21 日) 当我在内部将它安装在新的虚拟机上时,我认为这个错误已经逃脱了我,但我现在发现了一个缩小链接。
当我发布这个时,我试图在我们的生产服务器上安装它。在一周没有进展并且需要重新开始开发之后,我在我们的内部服务器上为 VM 配备了全新安装的 Crap...CentOS,以及全新安装的即时客户端和 oci8。
工作完美。
但是,我们只是将虚拟机的精确副本上传到我们的生产服务器,它神奇地不再起作用。尝试重新安装一切,无济于事。
所以我唯一可以缩小范围是防火墙问题(尽管我在尝试 127.0.0.1 时遇到了同样的问题)或者可能是 ESX(我们的生产服务器)服务器问题,内部服务器正在运行 ESXi。
有什么想法吗?
更新 (3/8/2010)我安装了 Xdebug 并让它跟踪我的代码。这是我得到的输出:
TRACE START [2010-03-08 17:53:05]
0.2090 327864 -> {main}() /data/aims3/http/octest.php:0
0.2091 327988 -> ini_set(string(14), string(1)) /data/aims3/http/octest.php:3
0.2093 327920 -> error_reporting(long) /data/aims3/http/octest.php:4
0.2094 328048 -> oci_connect(string(8), string(8), string(25)) /data/aims3/http/octest.php:6
跟踪在该点停止。
我已经在本地服务器上以相同的方式安装了所有东西,并且工作正常。要说我完全不知所措,那就轻描淡写了。
*注意:我运行 make test 并且每次测试都返回 FAIL。我从来没有在我的工作机器上运行它来查看它是否报告了相同的错误。知道为什么 make test 会报告 FAIL 但 make 不报告任何错误吗?
我已经安装了没有报告错误的 Oracle Instantclient 以及 OCI8 PECL 包并且不知所措。每当我尝试使用 oci_connect 打开连接时,它都会停止我的整个 PHP 脚本。
例子:
<?php
ini_set ("display_errors", "1");
error_reporting(E_ALL);
echo "before";
$conn = oci_connect("username", "password", "host");
echo "after";
?>
返回一个完整的空白页。该模块已加载(在 phpinfo 中可见),并且所有内容都已安装且没有错误。
我完全不知所措。
中央操作系统:5.4
阿帕奇:2.2.3
PHP: 5.3.1
即时客户端:11.2
oci8:1.4.1
有什么想法吗?
笔记
Apache 错误日志不报告任何内容
尝试调试:
1:
<?php
ini_set ("display_errors", "1");
error_reporting(E_ALL);
echo "before";
if(!function_exists('oci_connect')) die('Oracle Not Installed');
echo "after";
?>
回报:
beforeafter
2:
将主机更改为//主机
回报:
同样的错误