alma: php script gibt "" aus

hi!

weiß jemand, wieso mein php script nur "" ausspuckt?!?

weiß echt nicht mehr weiter; habs local getestet - da hast super funktioniert - dann hochgeladen, und -crash;

schon mal danke im voraus!
lg

  1. Hello,

    weiß jemand, wieso mein php script nur "" ausspuckt?!?

    Für was spuckt es das aus?

    Welche PHP-Versionen werden verwendet?

    Mit welchem Editor hast Du das Script bearbeitet?
    Mit welcher Codierung hat der Editor das Script gespeichert?
    Kennst Du den Befehl hexdump und steht er Dir zur Verfügung?

    Weißt Du, was eine BOM ist? -> Google!

    Liebe Grüße aus Syburg bei Dortmund

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hello,

      Nchtrag:

      Hast Du die Zeichenkette schon mal bei Google eingetippt? *tztz*

      Liebe Grüße aus Syburg bei Dortmund

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. klar hab ich die zeichnfolge gegoogelt; aber da spuckt er ziemlich viel nonsense aus (z.b. einen wiki articel über africaans?!?)

        ich weiß was bom ist (zumindest grundsätzlich); als editor verwende ich ultraedit; und ich habe meine files im utf-8 format gespeichert;

        phpversion: 5;

        ich werd einfach mal probieren, meine files mit anderer zeichnkodierung zu speichern;
        danke!

        1. Hello,

          ich weiß was bom ist (zumindest grundsätzlich); als editor verwende ich ultraedit; und ich habe meine files im utf-8 format gespeichert;

          ich werd einfach mal probieren, meine files mit anderer zeichnkodierung zu speichern;

          Es reicht, wenn Du Ultraedit sagst, dass er keine BOM erzeugen soll. Wo das aber vesteckt ist, weiß ich nicht. Ich kenne den Editor nicht.

          Du musst Deine Files schließlich so abspeichern, wie es Dein Server verlangt.
          Wenn der UTF-8 ausliefern will, also einen entprechenden Header senden will, dann hast Du evtl. keine Chance, die noch in einem anderen Format anzuliefern.

          Du kannst den Header ggf. im PHP-File mit header() überschreiben, aber ob der Server sich davon beeindrucken lässt, ist nicht sicher.

          Liebe Grüße aus Syburg bei Dortmund

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
  2. sry, hab ich vergessen: ich habe keine weiteren informationen gegeben, weil dieser text von einem script mit diesem inhalt ausgegeben wurde:
    <?php

  3. Hallo,

    weiß jemand, wieso mein php script nur "" ausspuckt?!?

    ja, das ist der Anfang eines UTF-8 file, gennannt BOM.
    Dein Browser ließt das file falsch.

    Evtl. nen passenden header senden.

    Gruß Thomas

    1. Hello Thomas,

      weiß jemand, wieso mein php script nur "" ausspuckt?!?

      ja, das ist der Anfang eines UTF-8 file, gennannt BOM.
      Dein Browser ließt das file falsch.

      Der Browser liest das File gar nicht falsch, da er es gar nicht zu Gesicht bekommt.
      Der Browser bekommt nur die ressource zu Gesicht, die der Server unter anderem aus dem File erzeugt.

      Es ist also der Server, der das File nicht interpretieren kann.
      Der Apache (gehe ich jetzt mal davon aus) öffnet das File auf den GET-Request hin und weiß, weil er so eingerichtet ist, dass _dieses_ File mit der Endung *.php im Namen dem PHP-Interpreter weitergereicht werden muss. Der Interpreter, als Element des/der Server-Prozesse, bekommt nun aber ein ungüliges Format für eine PHP-Datei. Er kommt nicht mit der führenden BOM zurecht, da diese Bytes enthält, die er nicht interpretieren mag.

      http://de.wikipedia.org/wiki/Byte_Order_Mark

      Liebe Grüße aus Syburg bei Dortmund

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. echo $begrüßung;

        Der [PHP-]Interpreter, als Element des/der Server-Prozesse, bekommt nun aber ein ungüliges Format für eine PHP-Datei. Er kommt nicht mit der führenden BOM zurecht, da diese Bytes enthält, die er nicht interpretieren mag.

        Das ist nicht richtig. Für PHP sind das drei normale Bytes außerhalb des PHP-Codes, die wie alles andere außerhalb von <?php ?> einfach durchgereicht werden.

        Vielleicht tritt bei der Verarbeitung auf dem Server ein Fehler auf, der lokal nicht erschien. Weiterhin kann es sein, dass das PHP auf dem Server so konfiguriert ist, dass Fehlermeldungen nicht ausgegeben werden. phpinfo() sollte darüber Auskunft geben. Die Werte von error_reporting und display_errors sind dafür interessant. Ich vermute, dass das Script im ersten PHP-Code-Block nach der BOM stirbt, bevor es eine weitere Ausgabe vornehmen konnte.

        Als Vorgehensweise schlage ich vor, die beteiligten Dateien als UTF-8 ohne BOM zu speichern. Weiterhin sollte die Fehlermeldungskonfiguration angesehen und gegebenenfalls zu Testzwecken geändert werden. Langfristig gesehen ist es sicherlich besser, sich mit dem Thema Error Handling and Logging zu befassen und einen Error-Handler zu implementieren, der den Administrator über aufgetretene Fehler informiert. Alternativ bietet sich an, log_errors und error_log zu konfigurieren und sich regelmäßig das Logfile anzusehen.

        echo "$verabschiedung $name";

        1. Das ist nicht richtig. Für PHP sind das drei normale Bytes außerhalb des PHP-Codes, die wie alles andere außerhalb von <?php ?> einfach durchgereicht werden.

          auch das ist nicht ganz richtig - wenn man 20 files (jeweils mit byte order mark) in ein anderes (ohne bom) inkludiert, habe ich nicht 20x mitten im quelltext ein bom stehen - der interpreter ist so schlau, dies beim lesen zu erkennen und zu entfernen (das war denke ich mal anders und php hats beinhart gelesen und ausgegeben, wenn ich mich richtig erinnere)

          1. echo $begrüßung;

            Das ist nicht richtig. Für PHP sind das drei normale Bytes außerhalb des PHP-Codes, die wie alles andere außerhalb von <?php ?> einfach durchgereicht werden.
            auch das ist nicht ganz richtig - wenn man 20 files (jeweils mit byte order mark) in ein anderes (ohne bom) inkludiert, habe ich nicht 20x mitten im quelltext ein bom stehen - der interpreter ist so schlau, dies beim lesen zu erkennen und zu entfernen (das war denke ich mal anders und php hats beinhart gelesen und ausgegeben, wenn ich mich richtig erinnere)

            Diese Behauptung konnte ich mit PHP 5.2.5 nicht nachvollziehen. Ich hab auch nicht 20 sondern nur 2 Dateien mit BOM inkludiert und hatte aber insgesamt 3 BOMs in der Ausgabe.
            (Wenn sich der FF auf UTF-8 stellt, dann zeigt er die BOMs nicht mit an, denn in UTF-8 sind es keine darstellbaren Zeichen. Auf ISO-8859-1 gestellt sind die Zeichen schön zu sehen.)

            echo "$verabschiedung $name";

            1. Diese Behauptung konnte ich mit PHP 5.2.5 nicht nachvollziehen. Ich hab auch nicht 20 sondern nur 2 Dateien mit BOM inkludiert und hatte aber insgesamt 3 BOMs in der Ausgabe.

              kann ich nicht nachvollziehen - kann das ggf was mit apache zu tun haben?

              1. echo $begrüßung;

                Diese Behauptung konnte ich mit PHP 5.2.5 nicht nachvollziehen. Ich hab auch nicht 20 sondern nur 2 Dateien mit BOM inkludiert und hatte aber insgesamt 3 BOMs in der Ausgabe.
                kann ich nicht nachvollziehen - kann das ggf was mit apache zu tun haben?

                Meiner verändert da auch nichts.

                echo "$verabschiedung $name";