更新(2010年5月21日)成功!

因此,经过$ head-> desk()'ing之后,我已经解决了它。

记住孩子们,请注意您使用的即时客户端版本,取决于虚拟化设置!

我一直在安装通用的即时客户端(不知道我们的ESX服务器位于AMD处理器上,而不是Intel),并且内部工作正常(CentOS安装为32位,因为我们的内部ESXI服务器不是64位)。好吧,即使您在坐在AMD64上的虚拟服务器上运行了32位安装,也仍然很重要,这仍然很重要。

这是我想检查的最后一件事,但是看起来,现在一切正常。

我要感谢所有帮助我通过所有可能的测试来弄清楚这一点的人,但最后,这是我的错,因为我没有意识到虚拟化的差异。


更新(2010年5月21日)我以为当我在内部安装新的VM上时,这个错误逃脱了我,但是现在我发现了一个狭窄的链接。

发布此版本时,我试图将其安装在我们的生产服务器上。经过一周的不进步并需要重新开发后,我在内部服务器上配备了全新安装的垃圾... centos,以及新的即时客户端和OCI8。

正常工作。

但是,我们刚刚将VM的精确副本上传到了我们的生产服务器,它神奇地不再起作用。尝试重新安装所有内容,无济于事。

因此,我唯一可以将其缩小到的是防火墙问题(尽管尝试127.0.0.1时我会遇到相同的问题)或可能是ESX(我们的生产服务器)服务器问题,但内部服务器正在运行ESXI。

有什么想法吗?

更新(2010年3月8日) 我安装了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不报告任何错误?

我已经安装了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中可见),并且没有任何错误安装的所有内容。

我完全亏损。

CentOS:5.4

Apache:2.2.3

PHP:5.3.1

InstantClient: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:

将主机更改为//主机

返回:

相同的错误

有帮助吗?

解决方案 5

它已经固定了。有关详细信息,请参见顶部,但这是悬崖注释:Virtualiztion环境很重要。

其他提示

Apache的error_log中有什么吗?这是MOD_PHP或FASTCGI还是普通CGI PHP?如果您通过命令行运行脚本会怎样?

您也可以尝试设置 PHP的错误日志 并看着那里。


Edit1: : 尝试:

echo "before";
if(!function_exists('oci_connect')) die('Oracle Not Installed');

并发布结果...


Edit2:我真的不确定。我最好的选择是此信息 PHP手册:

安装OCI8的最常见问题是没有正确设置Oracle环境。通常使用oci_connect()或oci_pconnect()作为问题出现。该错误可能是PHP错误,例如呼叫未定义的函数OCI_Connect(),Oracle错误,例如ORA-12705,甚至是Apache崩溃。检查Apache日志文件中的启动错误,并查看上面的部分以解决此问题。

还有其他人可以帮助布莱恩吗?

布莱恩,

老实说:两年前我尝试过,失败了。 :)我无法通过编译自己来使OCI功能用于任何事情。

但是为了完成它,我寻找了替代解决方案,并在Zend core for Oracle中找到了它。我要做的就是下载,运行安装程序,然后完成。它安装了Apache/PHP,MySQL(可选),并为您安装InstantClient。

现在作为Zend Server,它基本上是同一产品。我意识到这可能不是您所希望的解决方案,但是如果它有效...

Zend服务器

您是连接到遥控器还是本地数据库?我认为,对于本地主持人,您必须用“ false”替换“主机”。我希望这能帮到您...

编辑:我认为,您缺少一个参数...我的最后一个建议是:1。您必须设置端口(默认为1521)和/或2。您必须输入DB名称和/或必须设置实例名称( oracle_sid参数)

您永远不会检查OCI_Connect()的返回值或调用OCI_ERROR(),但是它看起来与您的问题无关,因为您似乎遭受了PHP崩溃的困扰。 RHEL也有一个开放的错误,可能会影响您:

http://pecl.php.net/bugs/bug.php?id=16626

您自己构建了OCI8包吗?您使用的是第三方二进制吗?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top