Mediawiki 未首次運行

Mediawiki 未首次運行

我正在嘗試將 Mediawiki 1.22.6 安裝到/wiki/apache 文件根目錄的子目錄中,其中包含一些其他目錄。當我嘗試打開時http://example.com/wiki或者http://example.com/wiki/index.php第一次產生LocalSettings.php,腳本不執行;相反,一個部分其中列印:

bar() 等)會在 # PHP 4 中引發解析錯誤。 if ( !function_exists( 'version_compare' ) || version_compare( phpversion(), '5.3.2' ) < 0 ) { // 我們需要使用 dirname(文件)這裡原因目錄是 PHP5.3+ 需要目錄名(文件)。 '/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.65.3.2.您沒有在問題中顯示完整的輸出,但看起來您收到的訊息實際上是 Mediawiki 主索引檔案的內容。最簡單的解釋是您沒有 Apache 處理程序(例如 AddHandler)配置為正確提供.php文件,因此index.php文件將作為文字提供。

即使 PHP 已啟用(通常使用設定指令,例如LoadModule php5_module libexec/apache2/libphp5.so在 main 中httpd.conf或以某種方式包含在單獨的檔案或目錄中),您可能仍然需要使用VirtualHost以下指令在容器內啟用它:

AddHandler application/x-httpd-php .php

由於使用 PHP 提供.php文件更安全(如果它們包含不應該公開的信息,我們不希望它們的內容可讀),因此.php應該為整個伺服器啟用文件處理程序。如果您使用CGI或進程提供 PHP 文件,則FCGI可能需要額外的設定步驟。

更複雜的解釋

您可能安裝了多個版本的 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 時,/home/*/public_html目錄將停用 php。重新命名public_html為其他名稱有幫助。

相關內容