我正在嘗試將 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.6
是5.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
為其他名稱有幫助。