Für ein Uni-Projekt musste ich [moodle](http://moodle.org) auf einem frischen virtuellen Strato-Server aufsetzen. Auf diesem läuft SuSE (was mir übrigens verdeutlicht hat, wie sehr ich an UBUNTU gewöhnt bin!).

Nunja, eigentlich ist die moodle-Installation keine große Sache, in diesem Fall jedoch gestaltete sich das Aufsetzen etwas schwieriger.

Bei der Installation von moodle muss der Pfad zu einem Datenverzeichnis ("moodledata") gesetzt werden. Dieses Verzeichnis darf nicht über das Internet zugänglich sein, da sonst alle Userdaten (inkl. Admin-Account) über das Internet ausspähbar sind.

Bei mir soll es daher so aussehen:

  • das Moodle-Verzeichnis liegt in /srv/www/vhosts/default/htdocs/moodle

  • das Datenverzeichnis liegt in /srv/open/moodledata

Wenn ich nun das Install-Script angeschubst und die Pfade angegeben hab, meldete moodle folgenden Fehler:

"`The 'Data Directory' you specified could not be found or created. Either correct the path or create that directory manually.`"

Das Datenverzeichnis existierte aber und hatte auch die passenden Zugriffsrechte!

Im Netz habe ich dann gelesen, dass moodle nicht sauber durchinstalliert, wenn der php-safe_mode eingeschaltet ist. Dann nämlich kann moodle nicht in sein Datenverzeichnis “moodledata” schreiben. Des Weiteren muss der Eintrag für das open_basedir so erweitert werden, dass das Datenverzeichnis ("moodledata") von Apache erreicht werden kann.

Ich habe daher in der php.ini den safe_mode auf Off gesetzt und als open_basedir das Verzeichnis “/srv/open” hinzugefügt.

Dennoch wollte moodle nicht installieren, die Fehlermeldung wurde immernoch angezeigt.

Ein Blick in die phpinfo(); zeigte, dass meine Einstellungen zwar als “Master Value” galten, nicht aber für die “Locale Values” übernommen wurde.

Das “Problem” ist, dass es zwar eine globale php.ini gib, aber auf den Strato-Servern dieses komische Admintool plesk läuft . Damit werden dann Virtuelle Hosts angelegt (die gehen davon aus, dass jemand mit einem Root Server Domains für andere Kunden hosted). Und in den einzelnen VHost-Konfigurationen werden dann die Einstellungen aus der globalen php.ini wieder überschrieben.

Des Rätsels Lösung war bei mir die Datei /etc/apache2/conf.d/zz010_psa_httpd.conf. Diese ist die config Datei für den “Default” VHost.

Hier habe ich folgendes eingetragen:

 <ifmodule mod_php5.c>
     php_admin_flag engine on
     php_admin_flag safe_mode off
#    php_admin_value open_basedir "/srv/www/vhosts/default/htdocs:/tmp"
     php_admin_value open_basedir "/srv/www/vhosts/default/htdocs:/srv/open:/tmp"
 </ifmodule>

Und jetzt läuft es… :-)