0

在生产服务器上升级旧版 mediawiki 之前,我正在设置一个测试服务器。我正在尝试复制生产服务器上的内容 - apache2.4 和 php5.3。

当我尝试访问任何 php 文件时,服务器将其显示为文本而不是运行它。

这一切都在 Ubuntu 12.04 LTS 上运行。可用的 apache 包是 2.2 版,所以我不能简单地 apt-get。

我已经从源代码构建了 apache 2.4,它从我指定的 DocumentRoot 正确地提供了一个 index.html。

在 httpd.conf 中,我添加了:

DocumentRoot = /var/www
AddType application/x-httpd-php .php
<filesMatch>"\.php$:"
   SetHandler application/x-httpd-php .php
</filesMatch>

我已经安装了 php5.3,它正在工作——我可以从命令行运行 phpinfo.php。

在 /etc/php5/apache2/php.ini 我有(错误显示仅用于测试):

engine = On
display_errors = On 
display_startup_errors = On 
doc_root = /var/www

我无法在 httpd.conf 或安装 httpd 的目录 (/usr/local/apache2) 中找到对任何类型的 mod_php 的引用。

网络上的一些参考资料提到了“模块可用”和“模块启用”,但这些似乎是 Debian 添加的便利,而不是 apache 源构建的一部分。

我错过了什么?我确定这很简单。

4

2 回答 2

1

在为 apache 和 php 搜索和使用多个存储库中的包并尝试从源代码构建其中一个或两者之后,我确定似乎没有与 apache 2.4 兼容的 libphp5.so。无论如何,我没有找到它。

我重新配置了一切以将 php 用作 cgi 而不是模块,并以这种方式工作,这足以满足我的预期目的。

于 2013-06-24T13:35:29.263 回答
0

您需要在 httpd.conf 中加载 php 模块:

在我的 Linux Slackware 上,我在 /etc/httpd/mod_php.conf 中有这个

LoadModule php5_module lib/httpd/modules/libphp5.so

# Tell Apache to feed all *.php files through PHP.  If you'd like to
# parse PHP embedded in files with different extensions, comment out
# these lines and see the example below.
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

在 /etc/httpd/httpd.conf 中:

# php
Include /etc/httpd/mod_php.conf
于 2013-06-19T21:32:51.007 回答