Ich versuche Mediawiki 1.22.6 in ein Unterverzeichnis /wiki/
des Apache-Dokumentenstammverzeichnisses zu installieren, das einige andere Verzeichnisse enthält. Wenn ich versuche,http://example.com/wikioderhttp://example.com/wiki/index.phpWenn Sie LocalSettings.php zum ersten Mal generieren, wird das Skript nicht ausgeführt. Stattdessen wird einTeildavon ist abgedruckt:
bar(), usw. usw.), die in # PHP 4 Parsefehler verursachen. Setup.php und ObjectCache.php haben Strukturen, die in PHP 5.0 bzw. # 5.1 ungültig sind. if ( !function_exists( 'version_compare' ) || version_compare( phpversion(), '5.3.2' ) < 0 ) { // Wir müssen dirname( verwendenDATEI) hier verursachenDIRist PHP5.3+ erfordert dirname(DATEI) . '/includes/PHPVersionError.php'; wfPHPVersionError( 'index.php' ); } # Gemeinsamen Code initialisieren. Dies gibt uns Zugriff auf GlobalFunctions, den # AutoLoader und die globalen Variablen $wgRequest, $wgOut, $wgUser, $wgLang und # $wgContLang, unter anderem; esnichtladen $wgTitle erforderlichDIR. '/includes/WebStart.php'; $mediaWiki = neues MediaWiki(); $mediaWiki->run();
Wenn Sie das Skript ausführen, php -f index.php
wird die erwartete Ausgabe erzeugt.
Es gibt keine Aliase oder Umschreiberegeln; mod_php scheint aktiviert zu sein – Mediawiki funktioniert, wenn es als Dokumentstamm installiert ist. In der aktuellen Installation ist der Dokumentstamm ein symbolischer Link.
Der virtuelle Host ist wie folgt konfiguriert:
<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>
Es gibt also keine spezielle Konfiguration für Mediawiki.
Antwort1
Die erforderliche Mindest-PHP-Version für Mediawiki 1.22.6
ist 5.3.2
. Sie zeigen in Ihrer Frage nicht die vollständige Ausgabe, aber es sieht so aus, als ob die Nachricht, die Sie erhalten, tatsächlich der Inhalt der Hauptindexdatei von Mediawiki ist. Die einfachste Erklärung ist, dass Sie keinen Apache-Handler haben (z.B AddHandler
) für die ordnungsgemäße Bereitstellung von Dateien konfiguriert .php
, sodass die index.php
Datei als Text bereitgestellt wird.
Auch wenn PHP aktiviert ist (normalerweise mit einer Konfigurationsdirektive wie LoadModule php5_module libexec/apache2/libphp5.so
in Ihrem Hauptverzeichnis httpd.conf
oder auf irgendeine Weise aus einer separaten Datei oder einem separaten Verzeichnis eingebunden), müssen Sie es möglicherweise dennoch in Ihrem VirtualHost
Container mit einer Direktive wie der folgenden aktivieren:
AddHandler application/x-httpd-php .php
Da es sicherer ist, .php
Dateien mit PHP bereitzustellen (wir möchten nicht, dass ihr Inhalt lesbar ist, wenn er Informationen enthält, die nicht öffentlich sein sollten), sollte für den gesamten Server ein Handler für Dateien aktiviert werden. Wenn Sie PHP-Dateien mit einem oder -Prozess .php
bereitstellen, sind möglicherweise zusätzliche Konfigurationsschritte erforderlich.CGI
FCGI
Eine kompliziertere Erklärung
Möglicherweise sind mehrere PHP-Versionen installiert. Ihre Version von mod_php
wurde möglicherweise mit einer älteren Version der PHP-Bibliotheken kompiliert, während die Befehlszeilenversion (die manchmal separat über ein Paket wie installiert wird php-cli
) mit einem aktuelleren Satz von Bibliotheken verknüpft ist und daher ordnungsgemäß funktioniert.
Suchen Sie die mit mod_php verknüpften Bibliotheken (ersetzen Sie diese ggf. durch die Befehle Ihres Paketverwaltungstools):
% 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
oder
% locate libphp5.so
/usr/local/libexec/apache24/libphp5.so
% pkg which /usr/local/libexec/apache24/libphp5.so
Wenn Sie sicher sind, dass Sie die richtige PHP-Version installiert haben und Ihr Server für eine ordnungsgemäße Funktion eingerichtet ist, .php
Sie aber weiterhin Probleme haben, besteht Ihr nächster Schritt in der Fehlerbehebung mithilfe der Apache-Debugebenen und -Protokolldateien.
Antwort2
Wenn userdir aktiviert ist, ist PHP für /home/*/public_html
Verzeichnisse anscheinend deaktiviert. Die Umbenennung public_html
in etwas anderes hat geholfen.