Heinrich Schiller  14.03.2019 13:18

Problem mit pretty url's, mod_rewrite und openSuSE Leap 15

Merksatz: Auch eine 5 min. klar verfasste Dokumentation (die man dann auch wieder finden muss), erspart späteres stundenlanges Suchen :-)

Meine Websoftware entwickle ich meist unter zuhilfenahme von XAMPP. XAMPP ist eine LAMPP-Distribution die für viele Betriebssysteme verfügbar ist und einfache bereitstellung eines Webservers bietet. Schlicht XAMPP einfach installieren, Projekt im htdocs-Verzeichnis anlegen und mit der Entwicklung loslegen. XAMPP ist bereits vorkonfiguriert, was für den Anfang ganz gut ist. Man muss sich mit der konfiguration eines echten Apache-Webservers nicht großartig beschäftigen. Man kommt aber irgendwann zu dem Problem, dass das entwickelte Projekt zwar unter XAMPP tadelos funktioniert, auf einem "echtem" LAMPP wiederum nicht. Wenn man sich mit der konfiguration von Apache selten oder nie beschäftigt ist dann guter Rat teuer. Was läuft schief? Warum funktioniert meine Software bei meinem Hoster nicht? Und so weiter...

Ich habe die Erfahrung gemacht, das Code das unter Windows und XAMPP funktioniert, nicht zwangsläufig auch unter MacOS und XAMPP oder Linux und XAMPP funktionieren muss. Probleme können z.B. sein, was Windows ignoriert, das greift wiederum auf einem Unix/Linux System. Zum Beispiel die Berechtigungen auf ein Dateisystem und wie verschriedene Betriebssysteme damit umgehen. XAMPP ist zudem als "fertiges" Produkt, bereits gut ausgestattet, was aktivierte PHP-Module angeht. Diese PHP-Module müssen nicht zwangsläufig auch auf dem Webserver installiert sein und müssen dann nachinstalliert und aktiviert werden.

Darum arbeite ich hin und wieder am echtem Linux und teste dann meine Software. Das kann man zum Beispiel ganz bequem mit einer Virtualisierungs Lösung wie VirtualBox und virtualisiertem Linux OS erledigen. Oder ein echtes Linux installieren...

Meine Linux Distribuion ist ein openSuSE Leap 15 mit installiertem LAMP (Linux Apache MySQL PHP). Das kann man ganz bequem über Yast2->"Software installieren oder löschen"->Schemata->"Web- und LAMP-Server" installieren. Ist das gemacht, geht es im Terminal weiter. Möchte man die Server bedienen, erreicht man das als root über folgende Befehle:

systemctl start|restart|status|stop apache2.service

systemctl start|restart|status|stop mysql.service

Weiteres entnimmt man der openSuSE-Dokumentation, die ziemlich gut geschrieben ist.

Was für mich viel wichtiger ist und was mich heute für Stunden mal wieder beschäftigen ließ, ist die Tatsache das bei openSuSE einige PHP-Module zwar installiert, aber nicht aktiviert, sind.

a2enmod php7

a2enmod mod_rewrite

Das erste ist klar. Hat man das PHP-Modul nicht aktiviert, steht PHP nicht zur Verfügung. Das zweite war schon etwas kniffliger, den es gibt Software die dieses Modul nicht brauchen. Ist das nicht aktiviert und man eine .htacces-Datei mit RewriteEngine On in seinem Projektordner liegen hat, verabschiedet sich der Server mit einem HTTP Error 500.

Darum kann es nicht schaden sich über die benötigten und vorhandenen Module einen Überblick zu verschaffen.

php -m zeigt alle installierten Module

apache2ctl -M zeigt alle geladenen Module

Fazit

Ich habe eine gute Stunde gebraucht um mein Problem mit meiner .htaccess unter openSuSE 15 zu analysieren und zu beheben. Gut, ich bin kein Admin und oft mache ich das auch nicht. Aber vor dem Problem stand ich schon einmal und eigentlich habe ich damals angefangen dieses Problem für mich zu dokumentieren. Allerdings habe ich damals bei der hälfte der Dokumentation aufgehört, das wichtigste ausgelassen und später aus den Augen verloren. Ich habe vor kurzem dann mein Linux neu installiert und stand heute wieder vor dem eigentlich gelöstem Problem, allerdings ohne eine Lösung. Ganz schlecht :-(

Also ganz wichtig, für die Dokumentation immer Zeit nehmen, wichtige Teile unbedingt aufschreiben und wiederauffindbar archivieren :-)