问题:
这种情况已经持续了一段时间。我只安装成功过一次,之后,它要么:
- PHP 页面显示 PHP 代码(不是当前错误,但我遇到过这种情况)
- PHP 页面返回“服务器内部错误”
我真正想要的是让 PHP 通过 oci8 连接到 Oracle 11g XE。我没想到会这么难。
此外,查看位于的错误日志(我假设这是 PHP 的错误日志)/var/log/httpd/error_log
,发现了以下错误:
PHP 致命错误:未知:无法打开所需的‘/var/www/html/info.php’(包含路径 =‘.:/usr/share/pear:/usr/share/php’)。
我以前从来没有遇到过这种情况。
系统:
- Fedora 19 x86_64
- Oracle 11g XE
- Apache 2.4.6
- PHP 5.5.4
附加信息:
info.php 仅包含以下内容:
<?php
phpinfo();
?>
php -i
有效,尽管我不确定在那里寻找什么。
我尝试过的:
很多。但由于我重新格式化了 PC,并重新开始,因此以下是我所做操作的细分:
- 安装 Oracle 11g XE
- 将我的数据库正确备份到上述 Oracle 中
- 修改 .bashrc,添加以下内容
TMP=/tmp;导出TMP
TMPDIR=$TMP;导出TMPDIRORACLE_HOSTNAME=localhost.localdomain; export ORACLE_HOSTNAME ORACLE_UNQNAME=DB11G; export ORACLE_UNQNAME ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/product/11.2.0/xe; export ORACLE_HOME ORACLE_SID=XE; export ORACLE_SID NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`; export NLS_LANG ORACLE_TERM=xterm; export ORACLE_TERM PATH=/usr/sbin:$PATH; export PATH PATH=$ORACLE_HOME/bin:$PATH; export PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
导出类路径
if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi
- yum groupinstall“开发库”
- yum 安装 httpd
- 百胜安装 php
我启动了 apache,将其配置为在启动时启动,能够进入 Fedora 测试页面,并将测试 PHP 页面放在/var/www/html/
目录中。
本地主机工作正常。
localhost/info.php 返回“服务器内部错误”。
我不知道我做错了什么。我甚至还没有启动并运行 PHP,所以我非常担心我能否将其连接到 Oracle。有什么想法/建议吗?谢谢。
答案1
检查以下权限:
/var/www/html/info.php
我记得当运行 apache 进程的用户没有此文件的正确权限时也出现过类似的错误。
这不是一件好事,但您可以记下 info.php 的当前权限,chmod 777 /var/www/html/info.php 并查看它是否有效。如果有效,那么这就是问题所在,请尝试解决问题。
另外,请按照@GeoSword 的指示检查是否显示 php 代码而不是 html,因为这意味着 apache 中的 php 配置不正确。
答案2
听起来这里发生了很多事。
显示 php 代码而不是结果的页面可能是因为 php 处理程序在 apache 配置中未正确定义。Redhat 安装通常会处理此类问题。但是,在 apache 配置中的某个地方需要类似的东西来处理 php 文件
LoadModule php5_module modules/libphp5.so
AddHandler application/x-httpd-php .php .php5 .phtml
AddHandler application/x-httpd-php-source .phps
您遇到的致命错误可能是由您在 /var/log/httpd/error_log 中看到的错误引起的。
看起来 /var/www/html/info.php 不存在,而您的 php 程序确实需要它。我相信我不需要告诉您如何处理它!:)