我试图将Mediawiki 1.22.6安装到apache文档根目录下的子目录/wiki/目录下,其中包含一些其他的目录。 当我第一次尝试打开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( FILE )导致DIR是PHP5.3+ require dirname( FILE ) 。 '/includes/PHPVersionError.php'; wfPHPVersionError('index.php'); }#初始化通用代码。 这让我们可以访问GlobalFunctions,#AutoLoader和全局variables$ wgRequest,$ wgOut,$ wgUser,$ wgLang和#$ wgContLang等。 它不会加载$ wgTitle需要DIR 。 '/includes/WebStart.php'; $ mediaWiki = new MediaWiki(); $ mediaWiki->运行();
用php -f index.php运行脚本会产生预期的输出。
没有别名或重写规则; mod_php似乎已启用 – 如果以文档根目录安装,Mediawiki将起作用。 在当前安装文件根目录是一个符号链接。
虚拟主机configuration如下:
<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没有特殊的configuration。
Mediawiki 1.22.6所需的最低PHP版本是5.3.2 。 你不会在你的问题中显示完整的输出,但它看起来像你得到的消息实际上是Mediawiki的主要索引文件的内容。 最简单的解释是,你没有一个Apache处理程序( 例如 AddHandler )configuration为正确服务.php文件,所以index.php文件被作为文本。
即使启用PHP(通常在您的主httpd.conf像LoadModule php5_module libexec/apache2/libphp5.so这样的configuration指令,或者以某种方式从单独的文件或目录中包含),您仍然可能需要在VirtualHost容器中启用它与一个指令一样:
AddHandler application/x-httpd-php .php
由于使用PHP来服务.php文件更加安全(如果包含的信息不应该公开,我们不希望它们的内容是可读的),应该为整个服务器启用.php文件的处理程序。 如果使用CGI或FCGI进程提供PHP文件,则可能需要额外的configuration步骤。
更复杂的解释
您可能安装了多个PHP版本。 也许你的mod_php版本是针对老版本的PHP库编译的,而命令行版本(有时是通过一个像php-cli这样的软件包单独安装的)被链接到一个更新的库文件集,从而正常工作。
find与mod_php关联的库(根据需要replace包pipe理工具命令):
% 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 ,但您仍然遇到问题,那么使用Apachedebugging级别和日志文件进行debugging是您的下一步。
显然,当userdir被启用时,php被禁用/home/*/public_html目录。 重命名public_html到别的帮助。