在升级生产服务器上的旧版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源代码构建的一部分。
我错过了什么?我确信这很简单。
答案 0 :(得分:1)
在从几个存储库中搜索和使用apache和php的软件包,并尝试从源代码构建其中一个或两个之后,我确定似乎没有与apache 2.4兼容的libphp5.so。无论如何,我没有找到它。
我重新配置了所有使用php作为cgi而不是模块的东西,让事情按照这种方式运行,这足以达到我的预期目的。
答案 1 :(得分: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