Apache 2 和 PHP 5 不工作

Apache 2 和 PHP 5 不工作

我的 Web 服务器目录中有一个包含php phpinfo(); 内容的 test.php 文件。当我尝试php test.php在 shell 中执行时,它会正确执行。但是当我尝试在浏览器中打开网页时,它显示php phpinfo();。如何对 UNIX 计算机上的 Apache 2 和 PHP 5 进行故障排除?

答案1

我认为你需要将你的代码包装在<?php ... ?>.试试这个文件:

<?php
phpinfo();
?>

默认情况下,PHP 文件的内容是 HTML,不加修改地发送到浏览器。标记<?php?>标记由 PHP 解释的 PHP 代码的开始和结束。

答案2

作为penguin359 指出,php至少不会解释 html 页面中未用<?...括起来的任何内容。?>

如果尝试后它仍然不起作用,您应该做的第一件事可能是检查服务器的访问和错误日​​志(默认情况下,除非您的发行版做了一些奇怪的事情;检查AccessLog ErrorLog` 指令/var/log/apache2/access.log and /var/log/apache2/error.log中的配置文件) ,然后根据他们所说的具体内容继续进行故障排除。/etc/apache2/ for theand

如果页面被访问并且没有报告错误,则意味着服务器由于某种原因认为没有必要启动 php 解析器,很可能是因为配置错误。

apache 调用 php 解析器有几种不同的方式;两个最常见的方法是通过动态加载的 php 模块或通过 CGI。

如果它(应该是)通过加载,mod_php那么你的配置文件应该包含一个看起来像这样的指令

LoadModule php5_module /usr/lib/apache2/modules/libphp5.so
其中,以及指示它让 php5 模块处理 .php 页面的指令,可能如下所示:

<IfModule mod_php5.c>
  AddType application/x-httpd-php .php .phtml .php3 .php5
  AddType application/x-httpd-php-source .phps
  php_admin_flag register_globals off
</IfModule>

根据您的发行版处理 apache2 配置的方式,可能会有细微的差异。

如果它是通过 cgi 调用的——通常是一个更好的选择,因为它允许线程服务器以及诸如此类的漂亮东西苏执行-- 那么你应该再次检查你的 apache 配置文件并查找类似以下内容的行
AddHandler fcgid-script .php .php5

它告诉服务器如何处理以.php或结尾的文件.php5

<? ... ?>不过,再次强调一下,如果不查看访问和错误日​​志,很难猜测您的服务器到底出了什么问题(假设这不仅仅是将 .php 文件括起来的最初失败)。

相关内容