SebastianJu: Umstellung auf PHP5...

Hallo,

mein Provider hat von PHP4 auf 5 umgestellt und nun funktioniert meine Navigation nicht mehr. Ich habe ein wenig getestet und scheinbar kommt er damit nicht zurecht:

$aPath_info=explode(".php/",$_SERVER['PHP_SELF']);

Da gibt er einfach nichts zurück.

Während bei meiner lokalen Version dasjenige zurückgegeben wird was hinter dem .php/ steht passiert das online nicht. Doch darüber wird die entsprechende Kategorie aus der Datenbank herausgesucht.

Ist der Befehl veraltet? Wie lautet denn die Alterntive?

Freundliche Grüße!
Sebastian

  1. Hallo,

    $aPath_info=explode(".php/",$_SERVER['PHP_SELF']);

    Da gibt er einfach nichts zurück.

    Nichts? $aPath_info sollte hier "Array" ausgeben.

    Grüsse

    Cyx23

    1. Ja, Array gibt es zurück... Ich schreib mal bei der anderen Antwort mehr...

      Grüße!
      Sebastian

      1. Hallo,

        Ja, Array gibt es zurück... Ich schreib mal bei der anderen Antwort mehr...

        du hast ja auch ein Array erzeugt.

        Vielleicht hat sich die Ausgangsvaribale geändert o.ä. und $aPath_info[0]
        enthält den gewünschten Wert, bzw.  $_SERVER['PHP_SELF'] reicht hier?

        Grüsse

        Cyx23

  2. echo $begrüßung;

    $aPath_info=explode(".php/",$_SERVER['PHP_SELF']);
    Ist der Befehl veraltet?

    Nein.

    Wie lautet denn die Alterntive?

    • Alle Fehlermeldungen einschalten, auch die sonst unterdrückten Notice-Meldungen: error_reporting auf E_ALL stellen (und display_error auf on).
    • Kontrollausgaben machen: echo oder besser var_dump(). Was steht denn in $_SERVER['PHP_SELF'] drin?
    • phpinfo() aufrufen und nachschauen, was alles in $_SERVER steht.

    echo "$verabschiedung $name";

    1. Der Pfad lautet zB http://www.software-...de/...-cat.php/Impressum-...-VBA

      Damit wird normalerweise alles hinter php/ ausgelesen und darüber dann die Kategorie bestimmt. Ist halt ein Pfad mit Keywords.

      Der entsprechende Codeteil lautet:
      $aPath_info=explode(".php/",$_SERVER['PHP_SELF']);
      $path_info=$aPath_info[1];

      Normalerweise ist nun in der letzten Variable drin:
      Impressum-...-VBA

      Ist es aber nun nicht mehr.

      Testcode online:

      $aPath_info=explode(".php/",$_SERVER['PHP_SELF']);
      $path_info=$aPath_info[1];
      echo "A".$path_info."B".$_SERVER['PHP_SELF']."C".$aPath_info;

      ergibt:

      AB/sebastian-jurk-cat.phpCArray

      Also unter A ist nichts und php_self ist nur ein Bruchstück...

      • Alle Fehlermeldungen einschalten, auch die sonst unterdrückten Notice-Meldungen: error_reporting auf E_ALL stellen (und display_error auf on).

      Wird das im Php-Code gemacht? Ist mir noch nie begegnet. Tritt wie gesagt nur online auf.

      • Kontrollausgaben machen: echo oder besser var_dump(). Was steht denn in $_SERVER['PHP_SELF'] drin?
      • phpinfo() aufrufen und nachschauen, was alles in $_SERVER steht.

      Welche Infos sind denn da interessant?

      Grüße!
      Sebastian

      1. Hallo

        Testcode online:

        $aPath_info=explode(".php/",$_SERVER['PHP_SELF']);
        $path_info=$aPath_info[1];
        echo "A".$path_info."B".$_SERVER['PHP_SELF']."C".$aPath_info;

        ergibt:

        AB/sebastian-jurk-cat.phpCArray

        Also unter A ist nichts und php_self ist nur ein Bruchstück...

        Was soll da auch sein? Normalerweise ist anzunehmen, dass der Pfad zu einer Datei mit der Endung ".php" mit der Endung ".php" endet. Was soll dahinter (alles vor ".php" ist $path_info[0], alles danach (was auch immer) $path_info[1]) deiner Meinung nach noch kommen?

        Wundert mich eher, dass es bisher funktionierte.

        • phpinfo() aufrufen und nachschauen, was alles in $_SERVER steht.

        Welche Infos sind denn da interessant?

        Für $_SERVER['PHP_SELF'] z.B. alles, was in $_SERVER drinsteht. Warum folgst du nicht einfach dem Rat und schaust einfach, was dich erwartet?

        Tschö, Auge

        --
        Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
        (Victor Hugo)
        Veranstaltungsdatenbank Vdb 0.2
      2. echo $begrüßung;

        Der Pfad lautet zB http://www.software-...de/...-cat.php/Impressum-...-VBA

        Damit wird normalerweise alles hinter php/ ausgelesen und darüber dann die Kategorie bestimmt. Ist halt ein Pfad mit Keywords.

        Du nutzt also PATH_INFO, dann schau doch in $_SERVER['PATH_INFO'] nach.

        Testcode online:

        $aPath_info=explode(".php/",$_SERVER['PHP_SELF']);
        $path_info=$aPath_info[1];
        echo "A".$path_info."B".$_SERVER['PHP_SELF']."C".$aPath_info;

        ergibt:

        AB/sebastian-jurk-cat.phpCArray

        var_dump($aPath_info) sollte anzeigen, dass dein Array aus nur einem Element besteht. Du siehst ja auch, dass in $_SERVER['PHP_SELF'] nichts mehr nach dem .php/ steht, das man noch abspalten kann.

        Arrays gibt man besser mit print_r() oder var_dump() aus. Dann erhält man auch mehr Information als nur ein "Array".

        Also unter A ist nichts und php_self ist nur ein Bruchstück...

        Anscheinend hat sich der Inhalt von $_SERVER['PHP_SELF'] in dieser Version oder Konfiguration geändert. Teilweise sind die Inhalte von $_SERVER von der konkreten Umständen des Servers und der Einbindung PHPs in diesen abhängig.

        • Alle Fehlermeldungen einschalten, auch die sonst unterdrückten Notice-Meldungen: error_reporting auf E_ALL stellen (und display_error auf on).
          Wird das im Php-Code gemacht? Ist mir noch nie begegnet. Tritt wie gesagt nur online auf.

        Auf der Testmaschine steht das idealerweise irgendwo in einer übergreifenden PHP-Konfiguration: php.ini oder .htaccess (dort als Zahlenwert). Ansonsten kann man beide Direktiven auch noch im Script setzen. error_reporting mit der gleichnamigen Funktion und display_errors über ini_set().

        Notice-Meldungen werden beispielsweise ausgegeben, wenn du auf Variablen zugreifen willst, die gar nicht existieren, beispielsweise aufgrund von Tippfehlern oder falschen Annahmen. Im obigen Beispiel sollte $aPath_info[1] angemeckert werden, weil es das Element nicht gibt.

        • phpinfo() aufrufen und nachschauen, was alles in $_SERVER steht.
          Welche Infos sind denn da interessant?

        Schau rein, besonders im letzten Abschnitt, dann siehst du, in welchen Feldern von $_SERVER die für dich interessanten Werte drinstehen.

        echo "$verabschiedung $name";

      3. Hi,

        Der Pfad lautet zB http://www.software-...de/...-cat.php/Impressum-...-VBA

        da frage ich doch gleich mal: warum?
        Aus SEO-Sicht kannst Du statt dem / auch ein ? setzen

        Davon abgesehen ist das Aufsplitten in ein Array völlig überflüssig.

        $path_info = substr($_SERVER['PHP_SELF'],strrpos($_SERVER['PHP_SELF'],'/')+1);  
        if(!$path_info || $_SERVER['PHP_SELF']==$_SERVER['SCRIPT_NAME']) echo 'keine Auswahl';  
        else echo $path_info;
        

        reicht völlig und wirft beim Aufruf ohne / auch keine Notice.

        freundliche Grüße
        Ingo

        1. Hi,

          da frage ich doch gleich mal: warum?

          Es läßt sich damit ohne Änderung auch ein statischer Dateiname  bilden. Das und ...

          Aus SEO-Sicht kannst Du statt dem / auch ein ? setzen

          ... der Umstand, daß dem nicht immer so war oder sein muß, sowie kleinere Gründe lassen mich / seit je her favorisieren

          Davon abgesehen ist das Aufsplitten in ein Array völlig überflüssig.

          Stimmt. Und mit $path_info=$_SERVER['PATH_INFO']; geht es sogar noch kürzer! ;-)

          Gruß, Cybaer

          --
          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
          1. echo $begrüßung;

            Stimmt. Und mit $path_info=$_SERVER['PATH_INFO']; geht es sogar noch kürzer! ;-)

            $_SERVER['PATH_INFO'] enthält doch bereits den gesuchten Wert. Warum noch einmal umkopieren?

            echo "$verabschiedung $name";

            1. Hi,

              $_SERVER['PATH_INFO'] enthält doch bereits den gesuchten Wert. Warum noch einmal umkopieren?

              Ach, ach was! :)

              Gruß, Cybaer

              --
              Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
          2. Hi,

            Und mit $path_info=$_SERVER['PATH_INFO']; geht es sogar noch kürzer! ;-)

            allerdings mit führendem / und im Falle des Aufrufs ohne / kommt eine Notice: Undefined index: PATH_INFO in ...

            Und viel kürzer wäre dann

              
            if(isset($_SERVER['PATH_INFO']) && $_SERVER['PATH_INFO']!='/') echo substr($_SERVER['PATH_INFO'],1);  
            else echo 'keine Auswahl';
            

            auch nicht.

            freundliche Grüße
            Ingo

            1. Hi,

              if(isset($_SERVER['PATH_INFO']) && $_SERVER['PATH_INFO']!='/') echo substr($_SERVER['PATH_INFO'],1);
              else echo 'keine Auswahl';

              
              > auch nicht.  
                
              `$path_info=(empty($_SERVER['PATH_INFO']))?'':substr($_SERVER['PATH_INFO'],1);`{:.language-php} ist immer noch deutlich kürzer. ;-)  
                
                
              Gruß, Cybaer  
                
              PS: Bei mir "real" wäre es theoretisch ein `$path_info=@ifsetor($_SERVER['PATH_INFO']);`{:.language-php} - praktisch packe ich den Wert aber eh immer in eine Konstante. :) Wobei ich dabei, je nach Verfügbarkeit, entweder auf "/" oder "?" als Trennzeichen setzen kann, damit die Scripte ohne Änderung Server-übergreifend laufen.  
                
              
              -- 
              Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
              
        2. Moin!

          Der Pfad lautet zB http://www.software-...de/...-cat.php/Impressum-...-VBA
          da frage ich doch gleich mal: warum?
          Aus SEO-Sicht kannst Du statt dem / auch ein ? setzen

          Aber "Cool URIs don't change" - dein Vorschlag geht also vollkommen in die falsche Richtung, weil er eine unnötige Veränderung bedeuten würde.

          - Sven Rautenberg

          --
          "Love your nation - respect the others."
          1. Hi,

            Aber "Cool URIs don't change" - dein Vorschlag geht also vollkommen in die falsche Richtung, weil er eine unnötige Veränderung bedeuten würde.

            Zumindest im konkreten Fall.

            Aber: Ich habe auch mal für einen Kunden eine "/"-Applikation geschrieben, und später wechselte der Kunde dann von Unix/Apache auf Windows/IIS (auf "Wunsch" des Mutterkonzerns) - und ich also die Applikation von "/" auf "?" (seitdem arbeiten meine Scripts, bzw. das ihnen allen zugrundeliegende Framework, automatisch mit "/" oder mit "?" - je nachdem, was der Server hergibt).

            Im Sinne des "Cool URIs don't change" wäre es also (heutzutage) durchaus sinnvoller, von vorneherein und ausschließlich das überall verfügbare "?" zu verwenden. Bringen mich natürlich keine 10 Pferde zu ... ;-)

            Gruß, Cybaer

            --
            Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
            1. echo $begrüßung;

              Aber: Ich habe auch mal für einen Kunden eine "/"-Applikation geschrieben, und später wechselte der Kunde dann von Unix/Apache auf Windows/IIS (auf "Wunsch" des Mutterkonzerns) - und ich also die Applikation von "/" auf "?" (seitdem arbeiten meine Scripts, bzw. das ihnen allen zugrundeliegende Framework, automatisch mit "/" oder mit "?" - je nachdem, was der Server hergibt).

              Wie ich vor einiger Zeit mal herausfand kennt wohl (mittlerweile?) auch der IIS das Feature PathInfo. Wenn ich mich recht erinnere, kann man bei http://example.org/path/to/file.ext/path/info sogar das file.ext entfallen, wenn das als Default-Datei für den Aufruf des Verzeichnisses /path/to/ eingestellt ist. Allerdings konnte ich seitdem (aus zeitlichen Gründen) die Erkenntnisse aus diesem Versuch noch nicht in einer realen Anwendung unterbringen, um weitere Erfahrung damit zu sammeln.

              echo "$verabschiedung $name";

              1. Hi,

                Wie ich vor einiger Zeit mal herausfand kennt wohl (mittlerweile?) auch der IIS das Feature PathInfo.

                Also PATH_INFO/PATH_TRANSLATED bietet er durchaus an, aber AFAIK nicht im Sinne des Apaches.

                Aber wenn MS hier verbessert hat, würde es mich freuen.

                Allerdings wenn, dann muß man es wohl erst explizit freischalten. Denn ein spontaner Test auf den ersten "auskunftsfreudigen" IIS' im Netz (also die ersten passenden Hits beim Googeln nach offenen phpinfos - ich habe nur Apache, nicht aber IIS unter Win laufen) ergab das gewohnte Bild: www.example.com/info.php/Test -> 404

                Allerdings konnte ich seitdem (aus zeitlichen Gründen) die Erkenntnisse aus diesem Versuch noch nicht in einer realen Anwendung unterbringen, um weitere Erfahrung damit zu sammeln.

                Also falls Du die Zeit mal finden solltest: Kurzer Eintrag mit Topic "Look back" auch auf IIS" (oder so ähnlich) würde mich freuen. :-)

                Gruß, Cybaer

                --
                Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
                1. Hi,

                  Wie ich vor einiger Zeit mal herausfand kennt wohl (mittlerweile?) auch der IIS das Feature PathInfo.
                  Also PATH_INFO/PATH_TRANSLATED bietet er durchaus an, aber AFAIK nicht im Sinne des Apaches.
                  Aber wenn MS hier verbessert hat, würde es mich freuen.

                  Allerdings: Da der IIS mom. PATH_INFO IMHO falsch anwendet, wäre er selbst mit einem optionalen "Look back"-Feature à la Apache entweder zum Apache-Verhalten inkompatibel, oder zu sich selbst.

                  Gruß, Cybaer

                  --
                  Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
                2. echo $begrüßung;

                  Allerdings wenn, dann muß man es wohl erst explizit freischalten. Denn ein spontaner Test auf den ersten "auskunftsfreudigen" IIS' im Netz [...] ergab das gewohnte Bild: www.example.com/info.php/Test -> 404

                  Meine Ergebnisse mit den erreichbaren Testobjekten:

                  • IIS/5.0 (PHP 5.1.4) erfolgreich
                  • IIS/5.0 (PHP 4.3.11) erfolgreich (der hat geschwindelt, das war ein Apache)
                  • IIS/5.0 (PHP 4.3.2) nicht erfolgreich
                  • IIS/5.0 (PHP 4.3.8) nicht erfolgreich
                  • IIS/5.0 (PHP 4.3.6) nicht erfolgreich
                  • IIS/5.0 (PHP 4.4.8) nicht erfolgreich
                  • IIS/5.0 (PHP 4.3.4) nicht erfolgreich
                  • IIS/6.0 (PHP 5.0.3) erfolgreich
                  • IIS/6.0 (PHP 5.0.5) erfolgreich
                  • IIS/6.0 (PHP 5.1.2) erfolgreich
                  • IIS/6.0 (PHP 5.1.6) erfolgreich
                  • IIS/6.0 (PHP 4.4.4) erfolgreich (war auch ein Lügner)
                  • IIS/6.0 (PHP 4.4.4) nicht erfolgreich
                  • IIS/6.0 (PHP 4.3.8) nicht erfolgreich
                  • IIS/6.0 (PHP 5.0.4) nicht erfolgreich (der sah komisch konfiguriert aus)

                  Nach dieser "Messreihe" sieht es wohl so aus, dass das abhängig von der PHP-Version ist. Die 5er kann es, die 4er nicht. Grad wollte ich aufhören, lief mir noch ein 6er über den Weg, der PHP 4.4.4 als ISAPI eingebunden hatte. Kurz weitergeforscht ergibt sich, dass mit ISAPI und FCGI auch die 4er PHP-Version mitspielt.

                  echo "$verabschiedung $name";

                  1. Hi,

                    Meine Ergebnisse mit den erreichbaren Testobjekten:

                    Wow, cool, danke! :-))

                    • IIS/5.0 (PHP 4.3.11) erfolgreich (der hat geschwindelt, das war ein Apache)

                    Wie erkennst Du Schwindler? Einfach daran, daß sie statt typischer IIS-Variablen Apache-Variablen ausgeben (also z.B. _SERVER["SERVER_ADDR"] statt _SERVER["LOCAL_ADDR"])?

                    Nach dieser "Messreihe" sieht es wohl so aus, dass das abhängig von der PHP-Version ist.

                    Gelobt sei dene Ausdauer! :-)

                    Gruß, Cybaer

                    --
                    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
                    1. echo $begrüßung;

                      • IIS/5.0 (PHP 4.3.11) erfolgreich (der hat geschwindelt, das war ein Apache)
                        Wie erkennst Du Schwindler? Einfach daran, daß sie statt typischer IIS-Variablen Apache-Variablen ausgeben (also z.B. _SERVER["SERVER_ADDR"] statt _SERVER["LOCAL_ADDR"])?

                      Das waren mehrere Indizien. Im konkreten Fall stand bei SERVER_VERSION zwar "Microsoft-IIS/5.0, doch gleich drüber war SERVER_SIGNATURE vorhanden, eine typische Apache-Konfiguration. Außerdem gab sich das Betriebssystems als Linux zu erkennen, und alle Pfadangaben waren Unix-typisch: /bin, /usr/bin, /home etc. statt c:...

                      echo "$verabschiedung $name";

  3. Hi,

    Ist der Befehl veraltet?

    Nein, aber wozu überhaupt? Alles was in PATH_INFO steht (also ab dem "/" nach dem Scriptnamen) steht ohnehin in $_SERVER['PATH_INFO'] zur Verfügung - sofern der Server das überhaupt unterstützt.

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  4. Ist es besser einen neuen Thread aufzumachen und auf den alten zu verlinken oder wird das hier gelesen noch?

    Jedenfalls habe ich ein wenig herumprobiert...

    $path_info=ltrim($_SERVER['PATH_INFO'],"/"); liefert schon das selbe Ergebnis wie mein Explode. Ich hatte nur $aPath_info=explode(".php/",$_SERVER['PHP_SELF']); benutzt weil ich den ersten Teil des Arrays auch noch im Code benutzt habe für Variablenzuweisung. Damit hatte ich gleich alle benötigten Teile extrahiert...

    Leider funktioniert $_SERVER['PATH_INFO'] zwar lokal aber nicht online...

    Problem: Online gibt es kein Path_info und das php_self gibt nur den Namen des Skriptes ohne den Anhang zurück.

    Allerdings gibt es online ein: _SERVER["ORIG_PATH_INFO"]

    Darin steht das selbe wie in Path_Info lokal. Ein anderes Path_Info gibt es online wohl nicht mehr.

    Ich muss nun wohl tricksen schätze ich. Irgendwie eine der Variablen abfragen und wenn eine leer ist die entsprechende andere...

    Wenn Provider mal was ändern...

    Grüße!
    Sebastian

    1. Moin!

      Ich muss nun wohl tricksen schätze ich. Irgendwie eine der Variablen abfragen und wenn eine leer ist die entsprechende andere...

      Genau das wirst du tun müssen.

      Wenn Provider mal was ändern...

      Das hat übrigens nach meinem Kenntnisstand nichts mit PHP5 selbst zu tun. Alles, was in $_SERVER drinsteht, wird dir vom Webserver zur Verfügung gestellt, PHP ist da nur der Bote. Und als Serveradmin kann der Provider da natürlich Einfluß nehmen, insbesondere vom gewohnten Standard abweichen - warum auch immer.

      - Sven Rautenberg

      --
      "Love your nation - respect the others."
      1. Hi,

        Alles, was in $_SERVER drinsteht, wird dir vom Webserver zur Verfügung gestellt, PHP ist da nur der Bote.

        Ich weiß ja, daß Du es weißt, aber es sollte IMHO hier der Hinweis nicht fehlen, daß einige der $_SERVER-Einträge vom Client kommen und manipuliert sein, also z.B. Schadcode enthalten könnten - PHP_SELF gehört dazu. Man sollte das immer bedenken, und wenn es geht, sollte man sie durch Einträge vom Server ersetzen (z.B. statt HTTP_HOST besser SERVER_NAME verwenden).

        Und als Serveradmin kann der Provider da natürlich Einfluß nehmen, insbesondere vom gewohnten Standard abweichen - warum auch immer.

        Ja, z.B. auf 'nem IIS kein DOCUMENT_ROOT definieren ... =:-o

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
    2. Hi,

      Ist es besser einen neuen Thread aufzumachen und auf den alten zu verlinken oder wird das hier gelesen noch?

      nein und vermutlich ja. Solange dieser Thread nicht archiviert ist, bleibe bitte auch hier.

      Problem: Online gibt es kein Path_info und das php_self gibt nur den Namen des Skriptes ohne den Anhang zurück.

      Allerdings gibt es online ein: _SERVER["ORIG_PATH_INFO"]

      Darin steht das selbe wie in Path_Info lokal.

      dann nutze dieses doch.

      freundliche Grüße
      Ingo

      1. Hallo,

        ich hatte in diesem Thread das letzte Mal nur nicht antworten können weil kein "Nachricht beantworten" zu sehen war. Da habe ich gedacht es ist schon zu alt...

        Daher hier noch mal wie es jetzt gelöst ist als Kopie:

        ...

        Jedenfalls klappt es nun mit dem Code wieder. Die Lösung ist:

        if (ltrim($_SERVER['PATH_INFO'],"/") == "")
         {
         $path_info=ltrim($_SERVER['ORIG_PATH_INFO'],"/");
         }
        else
         {
         $path_info=ltrim($_SERVER['PATH_INFO'],"/");
         }

        ...

        Ist zwar nicht schön dass es solche Unterschiede gibt aber auf die Weise funktioniert es jetzt lokal und online...

        Grüße!
        Sebastian