Silvia S.: pb3 picture browser: parse error ??!??

Hallihallo:

gerade hab ich mir pb3 picture browser runtergeladen, ein php-Galerie-Skript.

Ohne was verändert zu haben kriege ich aber die Fehlermeldung:

Parse error: parse error, unexpected T_CLASS in /www/"verzeichnis"/"verzeichnis"/bilder/index.php on line 1

wenn ich die index.php (Hauptprogrammdatei) aufrufe.

in "verzeichnis" stehen natürlich echte Verzeichnisse ;-)

Der Anfang des Skripts sieht so aus:

<?php/*--------------------------------------------------------------------*//* Project            Retorte PictureBrowser                          *//*                    Script for displaying images on the web         *//*--------------------------------------------------------------------*//*                                                                    *//*                    Read README for further information             *//*                                                                    *//* Author             Nico Waldispuehl nw                             *//* Contact            nw at retorte dot ch                            *//* Datum of creat.    27. July 2003                                   *//* Version            3.2.0, 17.01.2006                               *//* Copyright          (c) nw 2003 - 2006                              *//* License            GNU Public License (check out LICENSE)          *//*                                                                    *//*--------------------------------------------------------------------*//*--------------------------------------------------------------------*//* Classdefinition and such                                           *//*--------------------------------------------------------------------*/class PICTURE_BROWSER{     // Declaring class variables    var $version;    var $aktId;    var $navArray;    var $pictures;    var $user_comments_data;    var $title;    var $cols;    var $thumb_width;    var

bla bla bla etc.

Kann mir jemand sagen, was ich tun muss, damit das läuft ??

Dankeschön

Silvia S.

  1. Hi

    gerade hab ich mir pb3 picture browser runtergeladen, ein php-Galerie-Skript.

    Das hier ist zwar nicht unbedingt das richtige Forum um diese Frage zu stellen, die würde wohl eher in das Supportforum des Anbieters des Scripts passen, aber so auf anhieb Würde ich sagen: Füge nach <?php eine neue Zeile ein und vor dem class desgleichen.

    Gruß
    Carl

  2. Hallo Silvia.

    gerade hab ich mir pb3 picture browser runtergeladen, ein php-Galerie-Skript.

    Von wo?

    Der Anfang des Skripts sieht so aus:

    […]

    Hier sind sämtliche Zeilenumbrüche defekt.

    Kann mir jemand sagen, was ich tun muss, damit das läuft ??

    Du müsstest sämtliche Zeilenumbrüche manuell korrigieren, da momentan die Kommentarzeichen das Script unbrauchbar machen.
    Es gilt nun herauszufinden, ob der Fehler bei dir (respektive deinen Programmen) oder beim Autor (respektive seinen Programmen) liegt.

    Korrekt formatiert sähe dein Codeschnipsel so aus:

    <?php  
    /*--------------------------------------------------------------------*/  
    /* Project            Retorte PictureBrowser                          */  
    /*                    Script for displaying images on the web         */  
    /*--------------------------------------------------------------------*/  
    /*                                                                    */  
    /*                    Read README for further information             */  
    /*                                                                    */  
    /* Author             Nico Waldispuehl nw                             */  
    /* Contact            nw at retorte dot ch                            */  
    /* Datum of creat.    27. July 2003                                   */  
    /* Version            3.2.0, 17.01.2006                               */  
    /* Copyright          (c) nw 2003 - 2006                              */  
    /* License            GNU Public License (check out LICENSE)          */  
    /*                                                                    */  
    /*--------------------------------------------------------------------*/  
    /*--------------------------------------------------------------------*/  
    /* Classdefinition and such                                           */  
    /*--------------------------------------------------------------------*/  
    class PICTURE_BROWSER{  
         // Declaring class variables  
         var $version;  
         var $aktId;  
         var $navArray;  
         var $pictures;  
         var $user_comments_data;  
         var $title;  
         var $cols;  
         var $thumb_width;  
         var
    

    Und hier sieht man auch, dass der Code recht alt ist, da heutzutage das Schlüsselwort „var“ nicht mehr gebraucht wird.

    Einen schönen Sonntag noch.

    Gruß, Ashura

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    mathbr:del.icio.us/ mathbr:w00t/
    1. echo $begrüßung;

      Und hier sieht man auch, dass der Code recht alt ist, da heutzutage das Schlüsselwort „var“ nicht mehr gebraucht wird.

      Ach, gar nicht wahr. PHP4 ist weiterhin ein verbreitetes System. Das kennt nur die var-Syntax. Außerdem sehen Pläne[*] vor, dass unter PHP6 var ein Alias für public wird und der E_STRICT-Hinweis nicht mehr erscheint.

      echo "$verabschiedung $name";

      [*] Link war zur Zeit des Setzens leider nicht erreichbar. Im Google-Cache ist die Seite aber noch aufrufbar. Hier nur die URL, da die Forumssoftware schon in der Vorschau daraus keinen Link anzeigen wollte:
      http://64.233.179.104/search?q=cache:hR-g8WvcZZcJ:www.php.net/~derick/meeting-notes.html+Minutes+PHP+Developers+Meeting%0A%0AParis,+November+11th+and+12th,+2005&hl=en&ct=clnk&cd=1

      1. Hallo dedlfix.

        Und hier sieht man auch, dass der Code recht alt ist, da heutzutage das Schlüsselwort „var“ nicht mehr gebraucht wird.

        Ach, gar nicht wahr. PHP4 ist weiterhin ein verbreitetes System.

        Gut mag sein. Mir steht persönlich kein einziger Server mit PHP < Version 5 zur Verfügung.

        Das kennt nur die var-Syntax. Außerdem sehen Pläne[*] vor, dass unter PHP6 var ein Alias für public wird und der E_STRICT-Hinweis nicht mehr erscheint.

        Was natürlich nicht anregen soll, var statt public zu verwenden, um die Sichtbarkeit festzulegen.

        [*] Link war zur Zeit des Setzens leider nicht erreichbar.

        Also erscheint normalerweise etwas Anderes als „Sorry, but the function ~derick/meeting-notes.html is not in the online manual.“?

        Einen schönen Sonntag noch.

        Gruß, Ashura

        --
        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
        mathbr:del.icio.us/ mathbr:w00t/
        1. Hi Ashura,

          [*] Link war zur Zeit des Setzens leider nicht erreichbar.

          Also erscheint normalerweise etwas Anderes als „Sorry, but the function ~derick/meeting-notes.html is not in the online manual.“?

          Ja, es sollte

          Minutes PHP Developers Meeting
            Paris, November 11th and 12th, 2005

          erscheinen und tut es bei mir jetzt auch.

          MfG, Dennis.

          1. echo $begrüßung;

            Ja, es sollte

            Minutes PHP Developers Meeting
              Paris, November 11th and 12th, 2005

            erscheinen und tut es bei mir jetzt auch.

            Ja, jetzt geht es auch bei mir wieder. War vielleicht nur eine temporäre Störung. Das von mir erwähnte var = Alias für public ist in Abschnitt 2.4 Deprecated Behaviour, erwähnt. Der Rest ist auch recht interessant. Allerdings sollte man nicht nur die Überschriften lesen, das dies erstmal nur Vorschläge sind. Die Entscheidung, wie/ob sie umgesetzt werden, steht erst in dem Kapitel.

            echo "$verabschiedung $name";

            1. Hi dedlfix,

              Das von mir erwähnte var = Alias für public ist in Abschnitt 2.4 Deprecated Behaviour, erwähnt. Der Rest ist auch recht interessant.

              Ja, sehr interessant und gut finde ich auch, dass register_globals nun endlich komplett rausgeschmissen, magic_quotes nicht mehr unterstützt und der Safe Mode komplett abeschafft werden sollen.

              Nicht wirklich vorstellen wozu es zu gebrauchen sein soll kann ich mir goto - PHP ist doch keine Sprache wie Assembler oder eine Kommandozeile, wo alles schön der Reihe nach abläuft, wäre goto vom Ansatz her nicht ein Gegensatz zu OOP? Ich glaube goto würde das alles nur unnötig komplex machen...

              Ebenfalls noch nicht so ganz vorstellen kann ich mir Name Spaces in PHP.

              Na ja, ich bin mal gespannt, wie sich PHP 6 entwickeln wird - grundsätzlich gefallen mir die Ansätze dafür aber gut, es soll aufgeräumt werden und das ist meiner Meinung auch dringend nötig um das Negative am Image zu verlieren.

              MfG, Dennis.

              1. echo $begrüßung;

                Nicht wirklich vorstellen wozu es zu gebrauchen sein soll kann ich mir goto - PHP ist doch keine Sprache wie Assembler oder eine Kommandozeile, wo alles schön der Reihe nach abläuft, wäre goto vom Ansatz her nicht ein Gegensatz zu OOP? Ich glaube goto würde das alles nur unnötig komplex machen...

                Ein vollständiges goto soll es ja nicht geben, sondern nur ein break mit label. Und wie break soll es nur zum Herausspringen aus Schleifen dienen. So man break n (mit n > 1) verwendet, sprich mehrere Schleifenverschachtelungen auf einmal verlassen will, dann ist ein labelisiertes break schon einfacher zu warten als jedes mal das n anzupassen, wenn sich was an der Anzahl der Verschachtelungen ändert. Ich bevorzuge allerdings, es gar nicht so weit kommen zu lassen und bei übermäßigem Anwachsen des Codes Funktionalitäten zusammenzufassen und auszulagern.

                Ebenfalls noch nicht so ganz vorstellen kann ich mir Name Spaces in PHP.

                Das wird sicher noch. :-) Mit Namespaces hätte es neulich (Release von Version 5.1.0) bestimmt nicht solch ein Missgeschick inklusive Aufschrei gegeben, als eine im Core hinzugekommene Datums-Klasse eine gleichnamige PEAR-Klasse zu verdrängen versuchte.

                Na ja, ich bin mal gespannt, wie sich PHP 6 entwickeln wird - grundsätzlich gefallen mir die Ansätze dafür aber gut, es soll aufgeräumt werden und das ist meiner Meinung auch dringend nötig um das Negative am Image zu verlieren.

                Ich weiß gar nicht mehr, ob das Umstellen von PHP3 auf 4 genauso schleppend vonstatten ging, wie jetzt von 4 auf 5 (so ist zumindest mein Eindruck), und wie lange PHP6 braucht, um sich durchzusetzen. Ich vermute, dass für den größten Teil der PHP-Anwender die PHP5-Features uninteressant sind (Verbesserung des Klassenkonzepts sehe ich als das wesentlichste Merkmal an). Und wenn PHP6 nicht deutlich an Geschwindigkeit zulegt (vermutlich interessiert das die meisten auch wieder nicht), dann sind die ausgeschalteten Ärgerlichkeiten (register_globals, magic_quotes) eher ein weiterer Grund, nicht umzusteigen ("Jetzt muss ich immer dieses umständliche $_FOO['bar'] verwenden ..." - "mysql_real_escape_string()?? Was'n das&plenk;???&eszet;").
                Ich befürchte auch, dass beim Thema Magic Quotes noch nicht alle Messen gelesen sind. Da viele Scripte unter PHP6 immer noch laufen werden, nun aber durch das ausgeschaltete Magische Quoting plötzlich Sicherheitslücken bekommen, so sich der Autor blindlings auf dieses Feature verließ, könnte schnell das Gerücht aufkommen, PHP6 an sich sei unsicher.

                echo "$verabschiedung $name";

  3. Hallo Silvia,

    Der Anfang des Skripts sieht so aus:

    <?php/*-----------------------------------------------------------
    [...]
    ---------*/class PICTURE_BROWSER{     // Declaring class variables    var $version;

    das hast du nicht wirklich so in deiner Quelldatei stehen?!
    Ohne jeglichen Zeilenumbruch?
    Dann wäre es kein Wunder, wenn PHP sich beschwert. Denn der Kommentar, der mit "//" eingeleitet wird (siehe obiges Fragment), geht bis zum Zeilenende. Wo siehst du das nächste Zeilenende?

    Abgesehen von den rein syntaktischen Aspekten ist es auch generell empfehlenswert, Programmcode sauber strukturiert zu schreiben. Sicher, es gibt Leute, die machen sich einen Sport daraus, möglichst alles in eine Zeile zu klemmen. Aber das ist ja nicht unbedingt nachahmenswert.

    Kann mir jemand sagen, was ich tun muss, damit das läuft ??

    Den Quelltext sauber in Zeilen aufteilen...

    Schönen Sonntag noch,
     Martin

    --
    Lebensmotto der Egoisten:
    Was ist so schlimm daran, dass jeder nur an sich selbst denkt? Dann ist doch an alle gedacht!
    1. Den Quelltext sauber in Zeilen aufteilen...

      Schönen Sonntag noch,
      Martin

      Danke. FileZilla hat das Skript als ASCII übertragen. Versteh zwar nicht warum (stellt eigentlich automatisch auf binär, wenn nötig). Deshalb waren die Umbrüche verschwunden. Jetzt klappt es auch.

      Welche Dateien müssen eigentlich in ASCII und welche in Binär übertragen werden ??

      Dankeschön

      Silvia S.

      1. Hallo Silvia.

        Welche Dateien müssen eigentlich in ASCII und welche in Binär übertragen werden ??

        Willst du, dass Zeilenumbrüche angepasst werden, überträgst du im ASCII-Modus. Soll der Inhalt einer Datei dagegen absolut unverändert übertragen werden, wählst du den Binär-Modus.

        Einen schönen Sonntag noch.

        Gruß, Ashura

        --
        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
        mathbr:del.icio.us/ mathbr:w00t/
      2. Hallo Silvia,

        Danke. FileZilla hat das Skript als ASCII übertragen.

        das wäre eigentlich richtig, dann sollte es _richtig_ funktionieren.  *grübel*
        Bist du sicher, dass es nicht gerade andersrum ist, also dass du das Script irrtümlich im Binary-Modus übertragen hast?

        Welche Dateien müssen eigentlich in ASCII und welche in Binär übertragen werden ??

        Grunsätzlich sollte man als ASCII übertragen, was lesbaren Text enthält, also HTML, CSS, Scripte, usw. und als Binary, was in einem herkömmlichen Texteditor nicht lesbar ist, also z.B. sämtliche Bilddateien.
        Der Sinn des ASCII-Modus ist der, dass Zeilenumbrüche zwischen verschiedenen Systemen angepasst werden, weil Windows die Zeilenumbüche anders codiert (CR,LF) als Unix-basierte Systeme (nur LF).

        So long,
         Martin

        --
        F: Was ist schlimmer: Alzheimer oder Parkinson?
        A: Parkinson. Lieber mal ein Bier vergessen zu zahlen, als eins verschütten.
    2. Hallo,

      Abgesehen von den rein syntaktischen Aspekten ist es auch generell empfehlenswert, Programmcode sauber strukturiert zu schreiben. Sicher, es gibt Leute, die machen sich einen Sport daraus, möglichst alles in eine Zeile zu klemmen.

      der Sport bestand vermutlich hier nur darin das unter *NIX geschriebene Script auf Windows zu öffnen und auf einen Webserver zu portieren.

      Gruß aus Berlin!
      eddi

      --
      Wer Rechtschreibfehler findet, darf sie behalten.