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