如何在我的 Linux Fedora 19 服务器中正确设置 PHP?

如何在我的 Linux Fedora 19 服务器中正确设置 PHP?

问题:

这种情况已经持续了一段时间。我只安装成功过一次,之后,它要么:

  • 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;导出TMPDIR

ORACLE_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 程序确实需要它。我相信我不需要告诉您如何处理它!:)

相关内容