Niko: Probleme mit Strato.de Server

Aloa,

Ich habe in letzter Zeit an meinem PHP-Projekt gearbeitet und es schon auf meinem Heimserver sowie einem Hosting-Server getestet, lief wunderbar! Jetzt habe ich es auf einen von Strato.de gehosteten Server kopiert und erhalte plötlich einige Fehlermeldungen:

Parse error:  syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /mnt/web6/21/88/5234788/htdocs/includes/json/json.php5 on line 842

im benannten Script steht folgendes:

841 class xml2json {  
842     public static function encode(DOMNode $node, $level = 0) {  
843         static $xpath;  
844         if (is_null($xpath)) {  
845             $xpath = new DOMXPath($node);  
846         }

...

wie man wohl schon sieht ist es eine Klasse, die XML in JSON umwandelt!

Ich verwende überall PHP v5.2.5. Was mir außerdem aufgefallen ist, dass er auf dem Strato.de Server die Funktion mb_detect_encoding() nicht zu kennen scheint! Ich schätze da stimmt was nicht mit der PHP Version.

Hoffe ihr könnt mir helfen!

Lg Niko

  1. Hallo,

    Ich verwende überall PHP v5.2.5. Was mir außerdem aufgefallen ist, dass er auf dem Strato.de Server die Funktion mb_detect_encoding() nicht zu kennen scheint! Ich schätze da stimmt was nicht mit der PHP Version.

    Zumindest letzteres könnte daran liegen, dass Strato vielleicht die Multibyte-String-Extension nicht installiert hat. phpinfo() sollte dir das entsprechend beantworten können.

    Gruß
    Christoph

  2. echo $begrüßung;

    Parse error:  syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /mnt/web6/21/88/5234788/htdocs/includes/json/json.php5 on line 842

    Sieht ganz so aus, als ob die PHP-Version auf dem Server diese Syntax nicht mag.

    842     public static function encode(DOMNode $node, $level = 0) {

    Da sie PHP5 ist, kommt PHP4 damit nicht zurecht, beispielsweise.

    Ich verwende überall PHP v5.2.5.

    Was heißt "du verwendest"? Meinst du damit, dass du Syntax verwendest, die mindestens PHP 5.2.5 voraussetzt? Oder meinst du, dass dir überall PHP 5.2.5 zur Verfügung steht? Da wo die in deinem Posting angegebene URL gehostet wird, sagt der Server, es sei nur Version 4.4.7.

    Was mir außerdem aufgefallen ist, dass er auf dem Strato.de Server die Funktion mb_detect_encoding() nicht zu kennen scheint! Ich schätze da stimmt was nicht mit der PHP Version.

    Welche ist denn dort in Verwendung? phpinfo() gibt dir darüber Auskunft. Auch sagt es, ob die Multibyte-String-Extension eingebunden wurde. Die ist nämlich optional.

    echo "$verabschiedung $name";

    1. Was heißt "du verwendest"? Meinst du damit, dass du Syntax verwendest, die mindestens PHP 5.2.5 voraussetzt? Oder meinst du, dass dir überall PHP 5.2.5 zur Verfügung steht? Da wo die in deinem Posting angegebene URL gehostet wird, sagt der Server, es sei nur Version 4.4.7.

      Das soll in diesem Fall bedeuten, dass mir die phpinfo() sagt, dass auf dem Server PHP v5.2.5 läuft.

      Welche ist denn dort in Verwendung? phpinfo() gibt dir darüber Auskunft. Auch sagt es, ob die Multibyte-String-Extension eingebunden wurde. Die ist nämlich optional.

      Damit hat sich warscheinlich dieses Rätsel gelöst, denn in der phpinfo() finde ich keinen passenden Eintrag.

      Hier mal die phpinfo() des Servers, evtl hilft es das Problem zu finden: Klick mich

      Lg Niko

      1. echo $begrüßung;

        Was heißt "du verwendest"? Meinst du damit, dass du Syntax verwendest, die mindestens PHP 5.2.5 voraussetzt? Oder meinst du, dass dir überall PHP 5.2.5 zur Verfügung steht?
        Das soll in diesem Fall bedeuten, dass mir die phpinfo() sagt, dass auf dem Server PHP v5.2.5 läuft.

        Ok, dann sehe ich keien Grund, warum PHP über diese Zeile meckert. Vermutlich ist es aber wie bei Syntaxfehlern üblich, dass die Ursache irgendwo vor der beanstandeten Zeile zu suchen ist. Entfern doch mal die gesamte Funktion, dann "syntaxfehlert" es bestimmt woanders.

        echo "$verabschiedung $name";

        1. Ok, dann sehe ich keien Grund, warum PHP über diese Zeile meckert. Vermutlich ist es aber wie bei Syntaxfehlern üblich, dass die Ursache irgendwo vor der beanstandeten Zeile zu suchen ist. Entfern doch mal die gesamte Funktion, dann "syntaxfehlert" es bestimmt woanders.

          Was wäre denn eine PHP4 - freundliche Syntax für diese Zeile? Kenn mich da mit den Unterschieden nicht aus.

          Lg Niko

          1. echo $begrüßung;

            Ok, dann sehe ich keien Grund, warum PHP über diese Zeile meckert. Vermutlich ist es aber wie bei Syntaxfehlern üblich, dass die Ursache irgendwo vor der beanstandeten Zeile zu suchen ist. Entfern doch mal die gesamte Funktion, dann "syntaxfehlert" es bestimmt woanders.

            Was wäre denn eine PHP4 - freundliche Syntax für diese Zeile? Kenn mich da mit den Unterschieden nicht aus.

            PHP4 kann OOP nur rudimentär, jedenfalls gegenüber der Version 5. Es kennt keine Zugriffsmodifizierer für Funktionen und Eigenschaften, also das "public static" müsste weg. Es kennt auch kein Type Hinting, also müsste auch "DOMNode" weg. Im Manual findest du in der Language Reference die Beschreibung von Classes and Objects für Version 4 und 5. Doch all das wird dir nichts nützen, weil du auch die DOM-Extension verwendest, die es erst ab PHP 5 gibt. Für PHP4 gibt es DOM XML.

            echo "$verabschiedung $name";

            1. Sooo, ich habe nach einigem Probieren den Fehlerteufel gefunden! =) Das Problem war, dass die aufgerufene PHP-Datei die Endung .php hatte, alle anderen PHP-Dateien haben die Endung .php5! Da auf dem Server PHPv4 als Standard eingestellt ist hat er alles mit PHPv4 bearbeitet.

              Problem hat sich also durch das anhängen einer kleinen "5" gelöst! ^^

              Danke nochmal für die Hilfe =)

              Lg Niko