/wiki/
Mediawiki 1.22.6をApacheドキュメントルートディレクトリのサブディレクトリにインストールしようとしています。このディレクトリには他のディレクトリも含まれています。http://example.com/wikiまたはhttp://example.com/wiki/index.phpLocalSettings.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
内で PHP を有効にする必要がある場合があります。VirtualHost
AddHandler application/x-httpd-php .php
PHP を使用してファイルを提供する方が安全であるため.php
(公開すべきでない情報が含まれている場合、その内容が読み取られないようにするため)、ファイル ハンドラーをサーバー全体で有効にする必要があります。またはプロセス.php
を使用して PHP ファイルを提供する場合は、追加の構成手順が必要になることがあります。CGI
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
/home/*/public_html
どうやら、userdir が有効になっていると、ディレクトリに対して php が無効になります。public_html
別の名前に変更すると解決しました。