Apache-2.2

Mediawiki 第一次沒有執行

  • May 14, 2014

我正在嘗試將 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( FILE ) 因為DIR是 PHP5.3+ 需要 dirname( FILE ) . ‘/includes/PHPVersionError.php’; wfPHPVersionError(‘index.php’); } # 初始化通用程式碼。這使我們可以訪問 GlobalFunctions、#AutoLoader 和全域變數 $ wgRequest, $ wg輸出, $ wgUser, $ wgLang 和 # $wgContLang 等;它不載入$wgTitle 需要DIR。’/includes/WebStart.php’; $ mediaWiki = new MediaWiki(); $ mediaWiki->執行();

執行腳本php -f index.php會產生預期的輸出。

沒有別名或重寫規則;mod_php 似乎已啟用 - 如果安裝為文件根目錄,Mediawiki 可以工作。在目前安裝中,文件根目錄是一個符號連結。

虛擬主機配置如下:

&lt;VirtualHost *:80&gt;
   ServerAdmin webmaster@localhost
   DocumentRoot /home/hell/public_html
   &lt;Directory /&gt;
       Options FollowSymLinks
       AllowOverride None
   &lt;/Directory&gt;
   &lt;Directory /home/hell/public_html&gt;
       Options Indexes FollowSymLinks MultiViews
       AllowOverride None
       Order allow,deny
       allow from all
       IndexOptions +ShowForbidden
   &lt;/Directory&gt;
   &lt;Directory /home/hell/public_html/private&gt;
       AuthType Basic
       AuthName "Restricted Access"
       AuthUserFile /home/hell/apasswords
       Require user satan
   &lt;/Directory&gt;
#   ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
#   &lt;Directory "/usr/lib/cgi-bin"&gt;
#       AllowOverride None
#       Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
#       Order allow,deny
#       Allow from all
#   &lt;/Directory&gt;
   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
&lt;/VirtualHost&gt;

所以Mediawiki沒有特殊配置。

顯然,當 userdir 啟用時,/home/*/public_html目錄的 php 被禁用。重命名public_html為其他內容有所幫助。

所需的最低 PHP 版本Mediawiki 1.22.65.3.2. 您沒有在問題中顯示完整的輸出,但看起來您收到的消息實際上是 Mediawiki 主索引文件的內容。最簡單的解釋是您沒有配置 Apache 處理程序(例如 AddHandler)來正確地提供.php文件,因此index.php文件被作為文本提供。

即使啟用了 PHP(通常使用LoadModule php5_module libexec/apache2/libphp5.somain 中的配置指令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 調試級別和日誌文件進行調試。

引用自:https://serverfault.com/questions/594708