Deutschland United States United Kingdom
ContentLion - Open Source CMS

Beta Test mit IIS-Server

Beta Test mit IIS-Server

Hallo Stevie,

ich hab mir nun einen neuen Server angeschafft. Allerdings ist dies nun ein Windows-Server mit IIS. Nach etwas hin und her hat die Installation der Beta auch scheinbar funktioniert. Allerdings ist danach auch Schluss.

Erstes Problem. Mein ModRewrite funktioniert noch nicht. Jedenfalls hat die von der Installation erstellten htaccess keine Wirkung.
Dies hab ich dann erstmal umgangen und den direkten Pfad genutzt: http://www.lothron.de/index.php?include=login

Nun bekomme ich die Meldung "Skin default cannot be found!" Ich hab nun schon nen Stunde gesucht, aber bin noch nicht auf die Ursache des Problems gekommen. Der ganze Code ist im Gegensatz zum Tutorial auch sehr viel komplexer geworden wie es scheint. :)

Ich vermute es liegt an der Zeile 140 im skincontroller.php:

PHP-Quelltext

1
if(file_exists(Settings::getInstance()->get("root")."/system/skins/".$skin."/index.php"))


Hier wird der Pfad nicht korrekt zusammengebaut und dann findet er die index.php des skins nicht und bricht dann ab.

Den Ausdruck "Settings::getInstance()->get("root")" hab ich noch nicht wirklich verstanden. Mal sehen wie ich da noch weiterkomme.

Dies mal als kurzen Zwischenstand. So ganz IIS kompatibel ist die Beta aber wohl noch nicht! :)

Auf dich hab ich gewartet ;-) Aufnahme in die Windows Web App Gallery

Was stand bei dir nach der Installation in der settings-Tabelle bei mod_rewrite?
Wenn das eingeschaltet war, hätt ich gern mal eine phpinfo ;-)

PHP-Quelltext

1
if(file_exists(Settings::getInstance()->get("root")."/system/skins/".$skin."/index.php"))


Mit Settings::getInstance() holt man die aktuelle Instanz der EInstellungen. Diese hängen unter anderem vom Ordner und Benutzer ab.
Mit get kann man Einstellungen auslesen. root ist hierbei der Pfad (auf dem Server) zum CMS.
Allgemein wird in der Zeile überprüft, ob der Skin (noch) existiert.

Schau mal in die settings-Tabelle nach der Einstellung root und mod_rewrite.

Hi,

du hast auf mich gewartet? Oje! :) Ich bin noch blutiger Anfänger in dem Thema PHP, IIS usw! ;) Aber ich geb mein Bestes!
Ich war übers Wochenende leider viel unterwegs und konnte nicht weiter testen.

Also hier ein paar Infos:

Table settings:
- mod_rewrite steht auf "1"
- root ist einfach nur leer (<- das wird wohl auf das Problem sein! ;))

Hier ist die phpinfo:
http://www.lothron.de/phpinfo.php

Grüße,
Stephan

Edit: Da ich nen kompletten Server hab kann ich dir auch gerne nen Webspace zur verfügung stellen, falls du mal selbst testen willst! :)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Stephan« (23. April 2012, 14:44)


Ich bin einen Schritt weiter:

Der Wert für root wird ja in der installer.php erzeugt. Da gibt es diese Funktion:

PHP-Quelltext

1
2
3
4
5
6
7
8
    function getServerRootPath(){
      $res "";
      $parts explode("/",$_SERVER['SCRIPT_FILENAME']);
      for($i 0;$i count($parts) -1;$i++){
        $res .= $parts[$i]."/";
      }
      return $res;
    }


Der Pfad aus $_Server wird mit explode in die einzelnen Ordner zerlegt. Allerdings werden die Ordner bei Windows mit "\" getrennt, nicht mit "/".

In einem Test funktioniert dies bei mir:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
$test $_SERVER['SCRIPT_FILENAME'];
echo $test;
$test2 explode("\",$test);
echo count($test2);

      for($i = 0;$i < count($test2) -1;$i++){
        echo $test2[$i]."\";
        
      }


Ich habe jetzt die befürchtung, dass sich das Problem nicht nur an dieser Stelle befindet! ;)

Grüße,
Stephan

Ich hab jetzt die Startseite am Laufen! :thumbup:

Hab die Root Variable von Hand mal ersetzt. Und zwar hab ich den Pfad wie oben beschrieben ausgelesen und dann die "\" einfach durch "/" ersetzt. Dies dann als Wert die in die Settingstabelle geschrieben. Damit bin ich jetzt schonmal einen Schritt weiter.

Man sollte beim ermitteln des Pfades also prüfen ob "\" im Pfad sind, wenn ja diese durch "/" ersetzen und dann geht es normal weiter...

Ich werd dann mal weiter testen! :)

Nächstes Problem:

ich konnte mich nun einloggen, aber dann wird die Seite http://www.lothron.de/admin/home.html aufgerufen. Da auf meinem Server das Mod Rewrite und das Plesk System noch nicht zusammen laufen (Der Webhoster sucht nach einer Lösung) muss ich erstmal ohne Mod Rewrite klarkommen. Hab deshalb auch gleich mal den Wert von mod_rewrite in der settings table auf 0 gesetzt. Anscheinend hat das aber keine Wirkung.

Deshalb jetzt meine Frage: Kann die Beta überhaupt ohne Mod Rewrite funktionieren?

Grüße,
Stephan

Hi,

das mit dem Pfad werden wir dann mal mit nem regulären Ausdruck ändern.

es geht auch ohne mod_rewrite. Wenn es auf 0 ist, reicht es vermutlich einfach, wenn du den Cache leers (content/cache löschen)

In meinem Content Ordner gibt es noch keinen Ordner cache! :)

dann installier mal neu und schreib in der installer.php die Funktion um, in der mod_rewrite geprüft wird ;-)

Werds mal probieren.

So langsam brauch ich nen eigenen Subversion Server um die ganzen Änderungen nicht zu vergessen! ;)

Ich werd irgendwann mal meinen auch für andere zum EInchecken zugängig machen, bin nur noch nicht dazu gekommen^^

Bin grad dabei eine Neuinstallation zu machen. Es scheint auch noch ein Problem mit den Schreibrechten zu geben. Der Installer sagt mir zwar dass er Schreibrechte hat, aber wenn dann z.B. die dbsettings geschrieben werden soll, dann gibt es Fehler. Die sind leider fast nicht zu sehen, da eine ganze Reihe Fehlermeldungen kommt und dann gleich wieder die install.php geöffnet wird und man steht wieder am Anfang! :)

Hmm, also auch nach Neuinstallation geht es ohne mod_rewrite nicht. Es werden immer Links in der Art http://lothron.de/admin/home.html generiert.

mod_rewrite wurde jetzt bei der Installation auf 0 gesetzt. Habe alle Datenbanken gelöscht und neu anlegen lassen.

Ideen? :)

Das ganze passiert in der Klasse system/classes/urlrewriting.pho. Kannst du da mal reinschauen?

Ja ich schau mal rein. Komme heute aber nicht mehr dazu.

So ich bin wieder einen Schritt weiter. :)

Das Problem scheint diese Funktion zu sein:

PHP-Quelltext

1
2
3
        private static function hasModRewrite(){
            return !(getenv('HTTP_MOD_REWRITE')=='Off' || (function_exists("apache_get_modules") && !in_array("mod_rewrite",@apache_get_modules())));
        }


Diese liefert immer zurück, dass ein modrewrite aktiv wäre. Obwohl mod_Rewrite in den Settings deaktiviert wurde.

Ich habe die Funktion jetzt einfach mal so geändert: 8)

PHP-Quelltext

1
2
3
        private static function hasModRewrite(){
            return false;
        }


Jetzt läuft es bei mir. Wie du das nun änderst musst du entscheiden, da ich nicht den ganzen Code kenne. Vielleicht muss in der Funktion einfach noch mal der Wert aus der Settingstabelle abgefragt werden.
Wobei das eigentliche Problem ja schon bei der Installation passiert. HIer wird ja schon ein mod_Rewrite erkannt obwohl es keine gibt.

Grüße,
Stephan

Die Funktion ist im Installer auch und aktiviert mod_rewrite in den Settungs ;-)
Kannst du die Funktion evtl. mit einer Prüfung des IIS erweitern?

Ähnliche Themen