oci_连接PHP中的空白页 更新(5/21/2010)成功

oci_连接PHP中的空白页 更新(5/21/2010)成功,php,oracle,pecl,oci8,Php,Oracle,Pecl,Oci8,所以,在花费了大量的$head->desk()之后,我解决了这个问题 记住,孩子们,要小心使用的即时客户端版本,这取决于虚拟化设置 我一直在安装通用即时客户端(不知道我们的ESX服务器安装在AMD处理器上,而不是英特尔),而且在内部运行良好(CentOS安装是32位的,因为我们的内部ESXi服务器不是64位的)。请注意,即使您在AMD64上的虚拟服务器上运行32位安装,安装什么样的即时客户端仍然很重要 这是我想检查的最后一件事,但现在看来,一切都很好 我想感谢所有帮助我通过所有可能的测试来解决这

所以,在花费了大量的$head->desk()之后,我解决了这个问题

记住,孩子们,要小心使用的即时客户端版本,这取决于虚拟化设置

我一直在安装通用即时客户端(不知道我们的ESX服务器安装在AMD处理器上,而不是英特尔),而且在内部运行良好(CentOS安装是32位的,因为我们的内部ESXi服务器不是64位的)。请注意,即使您在AMD64上的虚拟服务器上运行32位安装,安装什么样的即时客户端仍然很重要

这是我想检查的最后一件事,但现在看来,一切都很好

我想感谢所有帮助我通过所有可能的测试来解决这个问题的人,但最后,我没有意识到虚拟化的差异,这是我的错


更新(5/21/2010) 当我在一个新的虚拟机内部安装它时,我以为这个bug已经逃过了我的眼睛,但现在我发现了一个缩小的链接

当我发布此消息时,我正试图将其安装到我们的生产服务器上。在一周没有进展并且需要重新开发之后,我在我们的内部服务器上安装了一个全新的虚拟机。。。CentOS,以及即时客户端和oci8的新安装

工作得很好

然而,我们只是将虚拟机的一个精确副本上传到我们的生产服务器,它神奇地不再工作。尝试重新安装所有内容,但没有效果

因此,我只能将其缩小到防火墙问题(尽管我在尝试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测试,每次测试都返回失败。我从来没有在我的工作机器上运行过这个,以查看它是否报告相同的错误。知道为什么make测试会报告失败,但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";
?>
2:

将主机更改为//主机

返回:


相同的错误

Apache的错误日志中是否有任何内容?这是mod_php还是FastCGI还是普通CGI php?如果通过命令行运行脚本会发生什么

你也可以试着在那里设置和查看


EDIT1:尝试:

echo "before";
if(!function_exists('oci_connect')) die('Oracle Not Installed');
并发布结果


我真的不确定。我的最佳选择是以下信息:

最常见的问题是 安装OCI8时没有 正确设置Oracle环境。这 通常在使用时出现问题 oci_connect()或oci_pconnect()。这个 错误可能是PHP错误,例如调用 对于未定义的函数oci_connect(), Oracle错误,如ORA-12705,或 甚至Apache崩溃。检查Apache 记录启动错误的文件,请参阅 上面的章节解决了这个问题 问题


还有谁有办法帮助布莱恩吗?

你是连接到远程数据库还是本地数据库?我认为,对于localhost,您必须将“host”替换为“false”。我希望,这将帮助你


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

您从未检查oci_connect()的返回值或调用oci_error(),但它看起来与您的问题无关,因为您似乎正在遭受PHP崩溃。RHEL有一个开放的bug可能也会影响您:

您是否自己构建了oci8包?您使用的是第三方二进制文件吗?

Bryan

老实说,我两年前就试过了,但失败得很惨我无法通过自己编译使OCI函数实现任何功能

但为了完成这项工作,我寻找了另一种解决方案,并在Zend Core for Oracle中找到了它。我所做的只是下载,运行安装程序,然后就完成了。它为您安装Apache/PHP、MySQL(可选)和InstantClient

现在作为Zend服务器,它基本上是相同的产品。我意识到这可能不是你所希望的解决方案,但如果它奏效


它已被修复。有关详细信息,请参见顶部,但这里是悬崖注释:虚拟化环境很重要。

错误日志不会报告任何内容。正常CGI。从命令行返回“before”而不是“after”。我已经在我的.htaccess中设置了这一点:php_标志显示启动错误php_标志显示错误php_标志html_错误php_标志日志错误php_标志忽略重复错误php_标志忽略重复错误php_源关闭php_标志报告memleaks on php_标志跟踪错误php_值docref根0 php_值docref_ext 0 php_值错误报告999999999 php_值错误\u log/data/project/http/logs/php_错误。log@Bryan:谢谢。您还可以编辑您的问题,并在问题的
块中发布类似的内容。在运行该文件期间,日志中没有任何内容。我可以通过我的本地开发机器(Windows)连接到它。我认为,您缺少一个参数…我最后的建议是:1。您必须设置端口(默认为1521)和/或2。您必须输入db name和/或设置实例名称(ORACLE_SID参数)。出于安全目的,我删除了实际信息。它在我的本地机上工作,如果这些参数中的任何一个出现偏差,它将返回一个超时错误,而不是一个空白页
beforeafter
echo "before";
if(!function_exists('oci_connect')) die('Oracle Not Installed');