我正在尝试将 Mediawiki 1.22.6 安装到/wiki/
apache 文档根目录的子目录中,该目录包含一些其他目录。当我尝试打开http://example.com/wiki或者http://example.com/wiki/index.php第一次生成 LocalSettings.php 时,不会运行脚本;相反,部分其中打印的是:
bar() 等)在 # PHP 4 中会抛出解析错误。Setup.php 和 ObjectCache.php 的结构分别在 PHP 5.0 和 # 5.1 中无效。if ( !function_exists( 'version_compare' ) || version_compare( phpversion(), '5.3.2' ) < 0 ) { // 我们需要使用 dirname(文件)这里导致目录PHP5.3+ 是否需要 dirname(文件). '/includes/PHPVersionError.php'; wfPHPVersionError( 'index.php' ); } # 初始化通用代码。这使我们能够访问 GlobalFunctions、# AutoLoader 以及全局变量 $wgRequest、$wgOut、$wgUser、$wgLang 和 # $wgContLang 等;它确实不是加载 $wgTitle 需要目录.'/includes/WebStart.php'; $mediaWiki = new MediaWiki(); $mediaWiki->run();
运行脚本会php -f index.php
产生预期的输出。
没有别名或重写规则;mod_php 似乎已启用 — 如果作为文档根安装,Mediawiki 即可工作。在当前安装中,文档根是一个符号链接。
虚拟主机配置如下:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/hell/public_html
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/hell/public_html>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
IndexOptions +ShowForbidden
</Directory>
<Directory /home/hell/public_html/private>
AuthType Basic
AuthName "Restricted Access"
AuthUserFile /home/hell/apasswords
Require user satan
</Directory>
# ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
# <Directory "/usr/lib/cgi-bin">
# AllowOverride None
# Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
# Order allow,deny
# Allow from all
# </Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
因此 Mediawiki 没有特殊的配置。
答案1
所需的最低 PHP 版本Mediawiki 1.22.6
是5.3.2
。您的问题中没有显示完整输出,但看起来您收到的消息实际上是 Mediawiki 主索引文件的内容。最简单的解释是您没有 Apache 处理程序(例如 AddHandler
) 配置为正确提供.php
文件服务,因此该index.php
文件将以文本形式提供。
即使启用了 PHP(通常使用LoadModule php5_module libexec/apache2/libphp5.so
主文件中的配置指令httpd.conf
或以某种方式包含在单独的文件或目录中),您仍然可能需要使用VirtualHost
如下指令在容器内启用它:
AddHandler application/x-httpd-php .php
由于.php
使用 PHP 提供文件更安全(如果文件包含不应公开的信息,我们不希望文件内容可读),因此.php
应为整个服务器启用文件处理程序。如果您使用CGI
或FCGI
进程提供 PHP 文件,则可能需要额外的配置步骤。
更复杂的解释
您可能安装了多个版本的 PHP。也许您的版本mod_php
是针对较旧版本的 PHP 库编译的,而命令行版本(有时通过类似 的软件包单独安装php-cli
)链接到更新的库集,因此可以正常工作。
找到与 mod_php 相关的库(根据需要替换您的包管理工具命令):
% pkg info -a | grep mod_php
mod_php5-5.4.28,1 PHP Scripting Language
% pkg info -l mod_php5-5.4.28,1
mod_php5-5.4.28,1:
/usr/local/libexec/apache24/libphp5.so
/usr/local/share/licenses/mod_php5-5.4.28,1/LICENSE
/usr/local/share/licenses/mod_php5-5.4.28,1/PHP301
/usr/local/share/licenses/mod_php5-5.4.28,1/catalog.mk
或者
% locate libphp5.so
/usr/local/libexec/apache24/libphp5.so
% pkg which /usr/local/libexec/apache24/libphp5.so
如果您确定所安装的 PHP 版本正确且服务器设置.php
正确,但仍遇到问题,则下一步就是使用 Apache 调试级别和日志文件进行调试。
答案2
显然,当启用 userdir 时,php/home/*/public_html
目录将被禁用。重命名public_html
为其他名称会有所帮助。