如何配置 Apache 2.x 来评估 PHP,而不是将其作为 HTML 提供


How to configure Apache 2.x to evaluate PHP rather than serve it as HTML?

我想使用这个技术组合来提供php文件:

  • 乌班图 14.04 LTS
  • 阿帕奇 2.4.18
  • PHP 7.0.3

我使用 shell 命令配置和制作从源代码安装了 apache 和 php。

安装顺利。

我在这里安装了阿帕奇:

~/apache/

我在这里安装了php:

~/php/

php install 在 apache 树中放置了一个共享库:

-rwxr-xr-x  1 dan dan 29175263 Feb 18 01:14 libphp7.so

上面的文件位于此文件夹中:

~/apache/modules/

还编辑了 php 安装:

~/apache/conf/httpd.conf

我在那里看到这个条目:

LoadModule php7_module        modules/libphp7.so

我编辑了 httpd.conf 来收听

0.0.0.0:3080

我使用

~/apache/bin/apachectl start

它可以毫无问题地提供html文件。

我在 php.net 尝试了第一个演示:

<html>
 <head>
  <title>PHP Test</title>
 </head>
 <body>
 <?php echo '<p>Hello World</p>'; ?> 
 </body>
</html>

我把语法放在:

~/apache/htdocs/php10.php

当我得到 php10.php 带有卷曲时,我看到这个:

dan@nia111:~ $ 
dan@nia111:~ $ curl 0.0.0.0:3080/php10.php
<html>
 <head>
  <title>PHP Test</title>
 </head>
 <body>
 <?php echo '<p>Hello World</p>'; ?> 
 </body>
</html>
dan@nia111:~ $ 
dan@nia111:~ $ 

这是一个明显的故障。

我应该看到这个:

<html>
 <head>
  <title>PHP Test</title>
 </head>
 <body>
 <p>Hello World</p>
 </body>
</html>

问题:

如何调试我的技术组合,以便 Apache 评估我的 php 文件中的 php 语法,而不是将其作为纯 HTML 提供?

我放置了副本

~/apache/

~/php/ 

在 GitHub 上,以便您可以研究我的配置:

https://github.com/danbikle/php_broken

你需要告诉 Apache 哪些文件应该解析为 PHP。一种方法是使用此指令:

<FilesMatch "'.ph(p3?|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>

这告诉 Apache 将 *.php、*.php3 和 *.phtml 解析为 PHP,但你真的可以使用任何扩展名。