Plötzlich trat bei meinem Blog-Software "Movable Type" folgendes Problem auf: beim Aufrufen des Redakteurs-Interface erschien anstatt der Anmeldeseite folgende Fehlermeldung:
Got an error: Error opening file '/mt-config.cgi': No such file or directory
Ich stellte außerdem fest, dass sämtliche dynamischen Seiten, z.B. die Suche die selbe Fehlermeldung lieferten. Da ich die Blog-Software seit März nicht mehr angefasst hatte und damals noch alles funktionierte, vermutete ich eine Konfigurationsänderung auf Seite meines Providers. Zur Sicherheit prüfte ich die MT Installation und stellte fest, dass wirklich noch alle Dateien vorhanden waren...
Das selbe Problem kann auch bei der Installation auftreten. MT versucht zunächst entweder die Konfigurationsdatei mt-config.cgi im Installationsverzeichnis zu laden. Alternativ kann man die Konfigurationsdatei auch mt.cfg benennen. Dies ist jedoch nicht empfehlenswert, da die Datei sonst mit jedem Browser lesbar wäre - und damit auch die Zugangsdaten der zugrundeliegenden Datenbank. Wenn beide Dateien nicht gefunden werden, erscheint die Fehlermeldung. Dies liegt meist daran, dass MT das eigene Installationsverzeichnis nicht erkennen kann. Um das Problem zu lösen, gibt es mehrere Möglichkeiten:
- Man kann MT den Pfad zur Konfigurationsdatei manuell bekannt geben, indem man in jeder Perl-Datei die Zeile
use MT::Bootstrap App => 'MT::App::CMS';
durch folgende
use MT::Bootstrap App => 'MT::App::CMS', Config => '/www/path/cgi-bin/mt/mt-config.cgi';
ersetzt und den Pfad entsprechend den eigenen Gegebenheiten anpasst. Dies ist jedoch sehr aufwändig und fehlerträchtig und erschwert ein späteres Update von T auf eine neuere Version ungemein, da immer alle Dateien geändert werden müssen. - Besser ist es, MT über Umgebungsvariablen den eigenen Installationspfad bekannt zu geben. Hierzu legt man im Installationsverzeichnis von MT eine .htaccess Datei an mit folgenden Direktiven:
SetEnv MT_CONFIG /www/path/cgi-bin/mt/mt-config.cgi
SetEnv MT_HOME /www/path/cgi-bin/mt
Dies ist in jedem Fall sehr elegant und löste meine Probleme. Allerdings unterstützt nicht jeder Provider die Möglichkeit, diese Direktiven in .htaccess-Dateien zu verwenden.
Where did you change this? I tried it, but still my site doesn't work...
I first located the absolute directory path to mt-config.cgi in my MT installation by uploading a php-file including the function phpinfo() to my provider. Then I created a .htaccess file with the SetEnv directives you see at point 2 in the article and uploaded it to the same directory where mt-config.cgi is in. The path in the SetEnv rows have to be adjusted to your installation of course.
However, there is a chance that your provider does not allow own .htaccess files, since this modifies the behaviour of the apache webserver. So this fortunatly worked for me.