Mediawiki läuft nicht beim ersten Mal

Mediawiki läuft nicht beim ersten Mal

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.phpwird 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.6ist 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.phpDatei als Text bereitgestellt wird.

Auch wenn PHP aktiviert ist (normalerweise mit einer Konfigurationsdirektive wie LoadModule php5_module libexec/apache2/libphp5.soin Ihrem Hauptverzeichnis httpd.confoder auf irgendeine Weise aus einer separaten Datei oder einem separaten Verzeichnis eingebunden), müssen Sie es möglicherweise dennoch in Ihrem VirtualHostContainer mit einer Direktive wie der folgenden aktivieren:

AddHandler application/x-httpd-php .php

Da es sicherer ist, .phpDateien 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 .phpbereitstellen, sind möglicherweise zusätzliche Konfigurationsschritte erforderlich.CGIFCGI

Eine kompliziertere Erklärung

Möglicherweise sind mehrere PHP-Versionen installiert. Ihre Version von mod_phpwurde 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, .phpSie 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_htmlVerzeichnisse anscheinend deaktiviert. Die Umbenennung public_htmlin etwas anderes hat geholfen.

verwandte Informationen