oci_connect空白页PHP中的空白页
题
更新(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,它基本上是同一产品。我意识到这可能不是您所希望的解决方案,但是如果它有效...
您是连接到遥控器还是本地数据库?我认为,对于本地主持人,您必须用“ false”替换“主机”。我希望这能帮到您...
编辑:我认为,您缺少一个参数...我的最后一个建议是:1。您必须设置端口(默认为1521)和/或2。您必须输入DB名称和/或必须设置实例名称( oracle_sid参数)
您永远不会检查OCI_Connect()的返回值或调用OCI_ERROR(),但是它看起来与您的问题无关,因为您似乎遭受了PHP崩溃的困扰。 RHEL也有一个开放的错误,可能会影响您:
http://pecl.php.net/bugs/bug.php?id=16626
您自己构建了OCI8包吗?您使用的是第三方二进制吗?