niklaskamenisch: Steuerzeichen bei include ignorieren

hi,

hin und wieder passiert es mir, dass ich von unterwegs bzw bei Freunden, mal eben an den Server muss und eine PHP-Datei anpassen sollte. Dabei kommt es aber auch vor, dass sich in der Zeile 1, noch vor dem <?php ein unsichtbares Steuerzeichen einnistet. Includiere ich diese PHP dann, kann es passieren, dass ich eben keinen weiteren header mehr senden kann (already send) oder an einer unpraktischen stelle ein zeichen drinne ist, wodurch es eine Zeichenschaltung gibt.

Ich hatte jetzte überlegt, das ganze mit ob_start usw. abzufangen. Leider braucht das ja auch etwas Leistung und die ausgabe geht dann wirklich nur noch an der Stelle wo ich es bestimme. (Vor- und Nachteile davon mal dahin gestellt). Gibt es noch eine schönere Methode, außer ob_start um jedes include drum rum bzw. das mittragen von gescheiter Software auf dem Stick?

htaccess oder ein globaler php befehl wäre supper. Gerne auch ein PHP script das mir andere scripte fixen kann!

Gruß Niklas

--
Man muss nicht alles wissen, man sollte aber wissen, wo das nicht gewusste zu finden ist.
  1. Wärs nicht sinnvoller wenn du dafür sorgst dass diese Zeichen da nicht hin kommen? Was für welche sind es und wie schleichen die sich da ein?
    Mir passiert das ehrlich gesagt nie, außer die BOM, wenn man den Editor falsch einstellt. Aber das weiß man nach ein paar mal und stellt es ab.

    1. hi,

      richtig, das ist meistens nur die Sache mit dem BOM.
      Leider passiert das auch mit den FTP-Programmen usw. zudem bin ich nicht der einzige der in der Situation ist, sondern eben noch paar mitwerkelnde. Wenn man es abfangen könnte wäre es halt toll.

      Sichtbar sind die Zeichen nur mit dem richtigen Editor.

      Gruß Niklas

      --
      Man muss nicht alles wissen, man sollte aber wissen, wo das nicht gewusste zu finden ist.
      1. Hello,

        richtig, das ist meistens nur die Sache mit dem BOM.

        Leider passiert das auch mit den FTP-Programmen usw. zudem bin ich nicht der einzige der in der Situation ist, sondern eben noch paar mitwerkelnde. Wenn man es abfangen könnte wäre es halt toll.

        Ein FTP-Programm, das im binary transfer Mode irgendwas in die Dateien einbaut oder daraus entfernt, gehört auf den Müll.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
      2. Dann erstell dir ein Script das alle anderen Scripte im Projekt durchsucht und die Zeichen entfernt, falls welche da sind.

        Ich bin aber schon der Meinung dass man sowas durch eine saubere Arbeitsweise sehr einfach verhindern kann. Dazu gehört wirklich nur ein gescheiter Editor.
        Das halte ich auch für um einiges besser als irgendwelche Korrekturen im Code. Fangt doch nicht solches Gemurkse an.

        Wenn andere auch noch dran rum schrauben, müssen die eben genauso wissen was sie tun. Da werdet ihr nicht drum herum kommen.

        1. Hello,

          Dann erstell dir ein Script das alle anderen Scripte im Projekt durchsucht und die Zeichen entfernt, falls welche da sind.

          Dann könnte er damit auch gleich noch ein wenig experimentieren:
          http://de3.php.net/manual/en/function.parsekit-compile-string.php

          Zum Hochladen der Includes ein Script benutzten und nur den reinen Text hochladen, ohne die PHP-Tags <?php ...?>, durch die Prüffunktion schicken und nur, um die Tags erweitert abspeichern, wenn alles fehlerfrei ist.

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

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

            Dann könnte er damit auch gleich noch ein wenig experimentieren:
            http://de3.php.net/manual/en/function.parsekit-compile-string.php

            Zum Hochladen der Includes ein Script benutzten und nur den reinen Text hochladen, ohne die PHP-Tags <?php ...?>, durch die Prüffunktion schicken und nur, um die Tags erweitert abspeichern, wenn alles fehlerfrei ist.

            Ich habe noch ein kleines Spielzeug dazu im Netz gefunden. So ähnlich könnte er das dann auch gestalten.

            http://de.piliapp.com/php-syntax-check/

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

            --
             ☻_
            /▌
            / \ Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
        2. hi,

          Dann erstell dir ein Script das alle anderen Scripte im Projekt durchsucht und die Zeichen entfernt, falls welche da sind.

          Ich bin aber schon der Meinung dass man sowas durch eine saubere Arbeitsweise sehr einfach verhindern kann. Dazu gehört wirklich nur ein gescheiter Editor.

          Wie gesagt, das Problem habe ich nur Unterwegs, wo ich eben nicht auf gescheite Software zurück greifen kann! (Außer eben per Portable-Software)

          Das halte ich auch für um einiges besser als irgendwelche Korrekturen im Code. Fangt doch nicht solches Gemurkse an.

          Aus diesem Grund frage ich ja extra nach, ob es einen PHP-Befehl gibt, der genau bei so etwas hilft! Gemurkse wäre das angesprochene ob_start drumrum zu schachteln!

          Wenn andere auch noch dran rum schrauben, müssen die eben genauso wissen was sie tun. Da werdet ihr nicht drum herum kommen.

          Wahre Worte ... erzähl das mal einem Kunden ;)
          Der Argumentiert natürlich sofort, dass das System kacke ist, wenn es mit so etwas nicht zurecht kommt ... Normalerweise sollten die die Finger von so was lassen. Aber aussperren kann man die leider nicht immer.

          Gruß Niklas

          --
          Man muss nicht alles wissen, man sollte aber wissen, wo das nicht gewusste zu finden ist.
          1. Der Argumentiert natürlich sofort, dass das System kacke ist, wenn es mit so etwas nicht zurecht kommt

            Ich finds ja auch irgendwie seltsam dass PHP das immer noch nicht handlen kann.

            Ich würd mir einfach den Downloadlink zu einem Edidor deiner Wahl merken und den dann vor Ort ziehen. Und es dem Kunden auch empfehlen.
            Mal ehrlich, wer an einem Script rumschrauben darf und da auch was sinnvolles hinein editieren kann, der sollte doch auch in der Lage sein diese Problematik zu verstehen. Und wer sich was kaputt editiert, der sollte sich eben überlegen ob er wirklich nächstes mal nochmal was dran machen will.
            Klingt irgendwie stressig, deine Kunden ;-)

            1. Tach!

              Der Argumentiert natürlich sofort, dass das System kacke ist, wenn es mit so etwas nicht zurecht kommt
              Ich finds ja auch irgendwie seltsam dass PHP das immer noch nicht handlen kann.

              Wie soll es das auch tun? Zeugs außerhalb von <?php ?> beachtet es nicht. Von selbst puffert PHP auch nicht, aber es muss das was außerhalb steht irgendwie loswerden. Also ab zum Webserver damit. Dieses grundlegende Prinzip kannst du in PHP nicht ändern, wenn du nicht auf ein automatisch eingeschaltetes Ausgabepuffern setzen kannst.

              Von hinten durch die Brust ins Auge könnte man auf dem Server einen Mechanismus installieren, der zumindest Whitespace aus den Dateien trimmt.

              Insgesamt ist das aber eine Lösungssuche auf technischer Ebene, das Problem jedoch ein menschliches. Ungewünschte Zeichen müssen genauso wie ungewünschtes Verhalten allgemein durch den Bearbeiter kontrolliert werden. Es können ja auch Syntax- und andere Fehler im bearbeiteten Stück eingebaut worden sein. Wer nach dem Motto "wird schon stimmen" die Änderungen absendet und nicht kontrolliert, hat es nicht besser verdient, wenn das Ergebnis unbefriedigend ist. Und sich auf die Zeichen allein zu beschränken ist auch nur die halbe Miete für ein nicht vollständig lösbares Problem.

              dedlfix.

              1. Prinzipiell hast du schon recht. Vor allem damit.

                Wer nach dem Motto "wird schon stimmen" die Änderungen absendet und nicht kontrolliert, hat es nicht besser verdient, wenn das Ergebnis unbefriedigend ist.

                Mir gings im besonderen um die BOM am Anfang einer Datei.
                Texteditoren kommen mit denen ja auch zurecht und zeigen sie nicht an, bzw. steuer dadurch das Encoding des Textes. Nachdem PHP auch Text ist, könnte PHP ja auch BOM erkennen und ignorieren.

                1. Tach!

                  Texteditoren kommen mit denen ja auch zurecht und zeigen sie nicht an, bzw. steuer dadurch das Encoding des Textes. Nachdem PHP auch Text ist, könnte PHP ja auch BOM erkennen und ignorieren.

                  Das mit der BOM ist so einfach auch wieder nicht. Die existiert ja nicht nur für UTF-8. Vollständig lösen lässt es sich erst, wenn PHP generell in der Lage ist, mit Multibyte-Kodierungen umzugehen, also ab Version 6. Bis dahin wäre zwar das BOM-Ignorieren hilfreich, aber nur eine drangestückelte Problemverdrängung.

                  dedlfix.

                  1. hi,

                    Das mit der BOM ist so einfach auch wieder nicht. Die existiert ja nicht nur für UTF-8. Vollständig lösen lässt es sich erst, wenn PHP generell in der Lage ist, mit Multibyte-Kodierungen umzugehen, also ab Version 6. Bis dahin wäre zwar das BOM-Ignorieren hilfreich, aber nur eine drangestückelte Problemverdrängung.

                    Ich muss echt sagen: Phu, zum glück hab ich jetzte endlich das Gefühl, dass ich nicht der einzige bin, der es toll fände. Hab schon angefangen, an mir zu zweifeln =P

                    Gruß Niklas

                    --
                    Man muss nicht alles wissen, man sollte aber wissen, wo das nicht gewusste zu finden ist.
                2. Om nah hoo pez nyeetz, Encoder!

                  Mir gings im besonderen um die BOM am Anfang einer Datei.
                  Texteditoren kommen mit denen ja auch zurecht und zeigen sie nicht an, bzw. steuer dadurch das Encoding des Textes. Nachdem PHP auch Text ist, könnte PHP ja auch BOM erkennen und ignorieren.

                  Ich hatte auch schon den Fall, dass sich ein BOM durch eine Leerzeile bemerkbar macht, etwa wenn die Navigation eingebunden wird.

                  Matthias

                  --
                  1/z ist kein Blatt Papier.

            2. hi,

              Ich stimme der Meinung schon zu, geht nur eben nicht immer ... Grade im Notfall ist man an Systemen wo es mal wieder nicht geht!

              Klingt irgendwie stressig, deine Kunden ;-)

              Zum Glück nur ein kleiner Teil! Mit anderen unterhält man sich dann auch mal über privates oder tauscht Meinungen über Wacken aus ;)
              Der eine brauch den gepolsterten Samthandschuh, der andere wills hören wenn seine Idee sch... ist ;)

              Gruß Niklas

              --
              Man muss nicht alles wissen, man sollte aber wissen, wo das nicht gewusste zu finden ist.
  2. مرحبا

    hin und wieder passiert es mir, dass ich von unterwegs bzw bei Freunden, mal eben an den Server muss und eine PHP-Datei anpassen sollte. Dabei kommt es aber auch vor, dass sich in der Zeile 1, noch vor dem <?php ein unsichtbares Steuerzeichen einnistet.

    Wie greifst du auf den Server zu, von deinem Laptop/Rechner, oder dem Rechner deines Bekannten? Wenn es nicht dein Rechner ist, würde ich darauf tippen, dass dein Bekannter seinen Editor nicht richtig konfiguriert hat, sprich Bom unterdrücken. Das sieht man dann erst nach dem Hochladen auf den Server, wenn man keine Lokale Testumgebung hat, in der man die änderungen vor dem hochladen testen kann.

    mfg