PHP

Aus MoodleDocs
Wechseln zu:Navigation, Suche

PHP ist eine Skriptsprache, in der Moodle entwickelt und implementiert ist. Sie ist im Webserver integriert. Der Webserver entdeckt PHP-Seiten (an der Erweiterung *.php) und schickt sie zur Ausführung an PHP. PHP muss installiert und richtig konfiguriert sein, damit Moodle vernünftig (bzw. überhaupt) laufen kann.

PHP Versions

  • Moodle 3.0.1 und folgende Versionen von Moodle unterstützt PHP 7, wobei
    • Moodle 3.1 und frühere Versionen PHP 7.1 und neuere Versionen von PHP nicht unterstützt (was bedeutet dass aktuell keine Kombination von unterstützten Releases von Moodle vor Moodle 3.4 und unterstützter Releases von PHP existiert);
  • Moodle 3.4 und Moodle 3.5 erfordert PHP 7.0 oder PHP 7.1 oder PHP 7.2
  • Moodle 3.6 erfordert PHP 7.0 oder neuere Versionen von PHP
  • Moodle 3.7 und folgende Versionen erfordert PHP 7.1 oder neue Versionen von PHP

PHP-Einstellungen

Verifizieren bzw. setzen Sie die folgenden Einstellungen in Ihrer php.ini oder .htaccess Datei (falls Sie Apache verwenden). Bei Einstellungen, welche ON/OFF als Werte verwenden, können Sie ON mit 1 und OFF mit 0 ersetzen, falls Ihnen dies lieber ist. Vergessen Sie nicht nach einer Änderung an der php.ini den Webserver neu zu starten.

  • memory_limit sollte mindestens 96M sein (wobei manche Funktionen nicht funktionieren werden wenn die Einstellung auf diesem niedrigen Wert gesetzt ist). Mit einem niedrigeren Wert kann Moodle nicht installiert werden. 128M ist empfohlen, große Systeme können sogar einen noch größeren Wert erfordern
  • session.save_handler muss auf FILES gesetzt sein.
  • magic_quotes_runtime muss auf OFF gesetzt sein.
  • file_uploads muss auf ON gesetzt sein.
  • session.auto_start muss auf OFF gesetzt sein.
  • Das temp Verzeichnis muss gesetzt sein und für den Benutzer unter dem der Webserver läuft beschreibbar sein.
  • Prüfen Sie die Einstellungen im Abschnitt error display/logging und stellen Sie sicher dass die dortigen Einstellungen für Ihren Betrieb des Servers passend gesetzt sind.
  • post_max_size und upload_max_filesize begrenzen die maximale Größe von Dateien, die hochgeladen werden können
  • Prüfen Sie die Einstellungen in den Abschnitten [mail function] und database (für Ihre gewählte Datenbank) um sicherzustellen dass die dortigen Einstellungen für Ihren Betrieb des Servers passend gesetzt sind.

HTTP_RAW_POST_DATA Fehler

Manche Nutzer stellen beim Aufbau von Verbindungen zwischen MNET Servern oder beim Versenden von AJAX Webservice Anfragen Probleme fest, die mit $HTTP_RAW_POST_DATA in Verbindung stehen.

Request for server name returned empty response
 
    line 134 of /mnet/lib.php: call to debugging()
    line 115 of /admin/mnet/peers.php: call to mnet_get_public_key()

Diese Fehler betreffen Installationen, welche Moodle mit PHP 5.6 betreiben, und betreffen einen PHP bug wenn die always_populate_raw_post_data Einstellung auf den Standardwert 0 gesetzt ist.

Um diese Fehlermeldungen zu vermeiden sollten Sie den Wert der folgenden Einstellungen in Ihrer php.ini Datei anpassen:

  • always_populate_raw_post_data sollte auf -1 gesetzt sein.

Weitere Hintergründe über diesen Bug können Sie unter https://bugs.php.net/bug.php?id=66763 nachlesen

Die richtige php.ini Datei finden

Manchmal ist es nicht einfach, die PHP-Konfigurationsdatei php.ini zu finden, manchmal gibt es auf dem Server sogar mehrere solche Dateien. Um sicherzugehen sollten Sie 'phpinfo' ausführen (siehe weiter unten in diesem Artikel). Der Pfad zur php.ini Datei ist in den ersten Zeilen im obersten Abschnitt zu finden.

Wenn Sie PHP auf der Kommandozeile (CLI) verwenden, um den Cron-Job (oder eine anderen Moodle Funktion) zu starten, können die PHP-Einstellungen in einer anderen php.ini Datei liegen. Zur Prüfung nutzen Sie das folgende Kommando:

php -i | grep php.ini

PHP-Erweiterungen und PHP-Bibliotheken

Folgende PHP-Erweiterungen und PHP-Bibliotheken werden für die verschiedenen Moodle-Versionen benötigt bzw. empfohlen (manche, z.B. iconv, ctype und tokenizer sind zwischenzeitlich in PHP standardmäßig enthalten). Andere müssen zusätzlich installiert oder aktiviert werden:

  • iconv - erforderlich
  • mbstring - empfohlen
  • curl - erforderlich für Netzwerk und Webservices
  • openssl empfohlen (erforderlich für Netzwerk und Webservices)
  • tokenizer - empfohlen
  • xmlrpc - empfohlen (erforderlich für Netzwerk und Webservices)
  • soap - empfohlen (erforderlich für Webservices)
  • ctype - erforderlich
  • zip - erforderlich
  • gd - empfohlen (erforderlich für die Manipulation von Grafiken)
  • simplexml - erforderlich
  • spl - erforderlich
  • pcre - erforderlich
  • dom - erforderlich
  • xml - erforderlich
  • intl - empfohlen
  • json - erforderlich
  • geeignete Erweiterung für Ihren Datenbanktyp - erforderlich, z.B. mysql für den MySQL-Datenbankserver oder pgsql für den PostgreSQL-Datenbankserver
  • Weitere PHP-Erweiterungen werden möglicherweise für die optionale Unterstützung spezieller Moodle-Funktionalitäten benötigt, z.B. für die Authentifizierung über einen LDAP-Server und/oder die Kurseinschreibung oder Socket-Erweiterung für Chat-Server.

Fehlende PHP-Erweiterungen installieren

Wie Sie fehlende PHP-Erweiterungen auf Ihrem Server installieren hängt davon ab, wie PHP auf Ihre Maschine installiert ist und welchen Zugriff Sie auf den Server haben. Hier sind einige Möglichkeiten:

  • Wenn Ihr Server gehostet wird, wenden Sie sich an den Provider bzw. den zuständigen Administrator.
  • Wenn PHP aus dem Quellcode compiliert wurde, müssen Sie recompilieren mit den entsprechenden configure Einstellungen
  • Wenn PHP als Paket installiert wurde (typischerweise unter Linux), installieren Sie die zusätzlichen Pakete mit den entsprechenden Kommandos der Linux-Distribution
  • Wenn Sie einen Windowsserver nutzen, entfernen Sie die Auskommentierung der jeweiligen DLL Bibliotheken in der php.ini Datei.

Nach jeglichen Änderungen oder Ergänzungen müssen Sie Ihren Webserver neu starten damit die Änderungen wirksam werden.

.htaccess Dateien

Wenn Sie keinen Zugriff auf die php.ini Datei haben oder die obigen Anforderungen mit den PHP-Einstellungen für andere PHP-Anwendungen auf demselben Server kollidieren, dann können Sie die PHP-Einstellungen für Moodle auch in einer .htaccess Datei eintragen und diese Datei ins Wurzelverzeichnis der Moodle-Installation legen (dort wo auch die Moodle-Konfigurationsdatei config.php liegt).

Diese Datei heißt nicht immer .htaccess und manchmal funktioniert sie auch gar nicht. Bei Problemen wenden Sie sich an den Server-Administrator.

Die Eintragungen können in zwei Formen erfolgen:

  • php_value name value
  • php_flag name on/off

Beispiele:

  • php_value memory_limit 128M
  • php_flag register_globals off

PHP info

Die phpinfo Übersicht zeigt Ihnen Informationen über die Konfiguration Ihrer PHP Installation an. Dies ist insbesondere hilfreich um:

  • zu verifizieren dass Ihrer PHP Installation die Mindestanforderungen von Moodle erfüllt.
  • zu verifizieren dass die Werte, die Sie in Ihrer PHP Installation gesetzt haben, z.B. die Limits zum Upload von Dateien, auch wirklich berücksichtigt werden.
  • zu verifizieren dass Sie die für einen geordneten Moodle Betrieb erforderten PHP-Erweiterungen, z.B. die LDAP Erweiterung für eine LDAP Anbindung, installiert sind.

Anzeige der phpinfo innerhalb von Moodle

Administratoren finden die PHP Informationen auf der Seite Website-Administration > Server > PHP-Informationen.

Anzeige der phpinfo außerhalb von Moodle

Um die phpinfo anzuzeigen:

  • Legen Sie mit Hilfe eines Texteditors eine Datei mit dem Dateinamen info.php an, welche eine einzige Seite beinhaltet:

<?php phpinfo(); ?>

  • Speichern Sie diese Datei als info.php
  • Laden Sie diese Datei in das Wurzelverzeichnis Ihrer Webservers hoch.
  • Öffnen Sie diese Datei in Ihrem Browser. Zum Beispiel http://<server-name>/info.php.

Siehe auch