hawkmaster: <? veraltet? Nur noch <?php

Hallo zusammen,

in einem Project gibt es noch einige Zeilen wo PHP Code mit
<? echo ..
anfängt.
Ich habe mal heute die Webanwednung auf einem neuen Apache mit neuestem PHP installiert, Hier werden mir nun alle Seiten wo nur <? vorkommt im Browser so angezeigt.
Wenn ich es nach <?php ändere, funktioniert es.
Gab es hier eine Änderung oder gibt es irgendwo eine Einstellung damit auch <? als PHP Code geparst wird?

vielen Dank und viele Grüße
hawk

  1. Hallo,

    Gab es hier eine Änderung oder gibt es irgendwo eine Einstellung damit auch <? als PHP Code geparst wird?

    die Einstellung short_open_tags, die AFAIK in der Defaulteinstellung nicht aktiviert ist, erlaubt das Öffnen von PHP-Abschnitten mit der Kurzform "<?" und unterstützt außerdem "<?=" als Kurzform für "<?php echo ...".

    Wenn die Zahl der Scripts überschaubar ist, würde ich dir trotzdem empfehlen, sie anzupassen. Dann läuft's nämlich überall, unabhängig von den PHP-Einstellungen.

    So long,
     Martin

    --
    Datenbanken speichern keine User.
    Das liegt daran, daß Datenbanken mit der Lebensmittelversorgung für gespeicherte biologische Lebensformen derzeit noch Probleme haben.
      (Christoph Schnauß)
  2. @@hawkmaster:

    nuqneH

    in einem Project gibt es noch einige Zeilen wo PHP Code mit
    <? echo ..
    anfängt.

    Ziemlich daneben. Entweder man nutzt open short tags nicht oder man tut es, dann aber richtig: <?=

    Gab es hier eine Änderung oder gibt es irgendwo eine Einstellung damit auch <? als PHP Code geparst wird?

    PHP <? funktioniert nicht mehr

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. Hallo Gunnar,

      Ziemlich daneben. Entweder man nutzt open short tags nicht oder man tut es, dann aber richtig: <?=

      Danke für deine Hilfe.
      nun, du wirst es sicher auch schon erlebt haben, das du ein Projekt übernommen hast die schon einige Jahre auf dem Buckel hat und an denen etliche Leute was dazu beigetragen haben. Und so kam halt auch bei mir das <? in einigen Seiten zustande. Ich kann das ja auch problemlos bereinigen. Ich wollte lediglich wissen, warum es sich so verhält und wo man dies beeinflussen kann.

      Apropos: was meinst du mit <?=

      vielen Dank und viele Grüße
      hawk

      1. Apropos: was meinst du mit <?=

        <?=$foo?> ist die kurzschreibweise von <?php echo $foo; ?>

        Aber das hätte dir die Doku auch gesagt:

        "Note: This directive also affects the shorthand <?=, which is identical to <? echo."

  3. 'ǝɯɐu$ ıɥ

    Ich habe mal heute die Webanwednung auf einem neuen Apache mit neuestem PHP installiert, Hier werden mir nun alle Seiten wo nur <? vorkommt im Browser so angezeigt.
    Wenn ich es nach <?php ändere, funktioniert es.
    Gab es hier eine Änderung oder gibt es irgendwo eine Einstellung damit auch <? als PHP Code geparst wird?

    short_open_tags muss dafür aktiviert sein, davon wird aber abgeraten da <? probleme verursachen kann wenn XML eingesetzt wird...

    ssnɹƃ
    ʍopɐɥs

    --
    Answers: $1, Short: $5, Correct: $25, dumb looks are still free ...
  4. Hi!

    Gab es hier eine Änderung oder gibt es irgendwo eine Einstellung damit auch <? als PHP Code geparst wird?

    short_open_tag weder generell böse noch deprecated oder anderweitig vom Aussterben bedroht. Die Default-Einstellung ist sogar On, die vorgefertigten Development- und Production-Versionen der php.ini schalten es jedoch aus. Diesem Feature kommen lediglich andere Verwendungen von <? in die Quere. Wenn du diese nicht hast (XML), dann kannst du es ganz beruhigt aktivieren. Wenn du allerdings Scripte schreibst, die anderswo laufen sollen und du dort keinen Einfluss auf die Konfiguration hast, dann solltest du auf es verzichten.

    Lo!

    1. Hi!

      Gab es hier eine Änderung oder gibt es irgendwo eine Einstellung damit auch <? als PHP Code geparst wird?

      short_open_tag weder generell böse noch deprecated oder anderweitig vom Aussterben bedroht. Die Default-Einstellung ist sogar On, die vorgefertigten Development- und Production-Versionen der php.ini schalten es jedoch aus. Diesem Feature kommen lediglich andere Verwendungen von <? in die Quere.

      Ja, aber: fällt Dir ein Argument ein, welches für deren Verwendung spräche?

      Das Thema ist uralt und da man u.U. (z.B: als Entwickler, Hobbybastler ...) keinen (direkten) Einfluß auf die Unterstützung dieser unseligen Notation hat, kann man von der Benutzung derselben nur abraten.

      off:PP

      --
      "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
      1. Hi!

        Ja, aber: fällt Dir ein Argument ein, welches für deren Verwendung spräche?

        Wenn man nicht mit XML arbeitet, ergibt sich keine Notwendigkeit, darauf zu verzichten. <?= ist kürzer als <?php echo und damit oftmals übersichtlicher. Wenn sie schon da sind, warum soll man sie austauschen, wenn es einem keine Punkte bringt?

        Das Thema ist uralt und da man u.U. (z.B: als Entwickler, Hobbybastler ...) keinen (direkten) Einfluß auf die Unterstützung dieser unseligen Notation hat, kann man von der Benutzung derselben nur abraten.

        Es reicht auch, auf neutrale Weise aufzuklären, und dann den Probleminhaber selbst entscheiden zu lassen. Sie schaden weit weniger als ihnen immer nachgesagt wird.

        Lo!

        1. [latex]Mae  govannen![/latex]

          Ja, aber: fällt Dir ein Argument ein, welches für deren Verwendung spräche?

          Wenn man nicht mit XML arbeitet,

          Aber wer garantiert, daß das in Zukunft nicht passieren wird? Ich verwende ein paar Sachen, von denen ich vor einem Jahr sicher war, sie nie zu brauchen...

          Es reicht auch, auf neutrale Weise aufzuklären, und dann den Probleminhaber selbst entscheiden zu lassen. Sie schaden weit weniger als ihnen immer nachgesagt wird.

          Stimme ich nicht uneingeschränkt zu; siehe oben. Wenn man eine Technik mit potentiellen Problemen und eine andere ohne diese Probleme gegenüberstellt, sollte die Empfehlung immer zu Gunsten letzter ausfallen. Also besser direkt ohne s_o_t abreiten, dann ist man diesbezüglich von Anfang an sicher.

          Wenn man den Code ausschließlich für sich selbst verwendet, mag das sicherlich nicht ganz so schlimm sein (allerdings auch wieder lästig). Spätestens bei Programmen für Andere oder Veröffentlichung; sei es nur auf einer Website als Tutorial oder Beispiel, sollte man IMO bereits davon absehen.

          Cü,

          Kai

          --
          Resig is more like Javascript's Pee Wee Herman.  ;) (D.Mark in clj)
          Foren-Stylesheet Site Selfzeug JS-Lookup
          SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
          1. Hi!

            Wenn man nicht mit XML arbeitet,
            Aber wer garantiert, daß das in Zukunft nicht passieren wird?

            Wenn du der Herr über deinen Server bist, dann kannst du das problemlos projektbezogen konfigurieren. Ansonsten gibt es den simplen Workaround, das XML-<? mit echo auszugeben. Webhoster, die short_open_tag einfach so ausschalten, sind selbst schuld, wenn ihr Support überläuft.

            Ich verwende ein paar Sachen, von denen ich vor einem Jahr sicher war, sie nie zu brauchen...

            Inwieweit hat das deine Vorgehensweisen für neue Projekte beeinflusst? Achtest du nun in jedem Detail mehr darauf, was in Zukunft sein könnte? Wenn ja, wie ermittelst du die zukünftigen Bedürfnisse?

            Es reicht auch, auf neutrale Weise aufzuklären, und dann den Probleminhaber selbst entscheiden zu lassen.
            Stimme ich nicht uneingeschränkt zu; siehe oben. Wenn man eine Technik mit potentiellen Problemen und eine andere ohne diese Probleme gegenüberstellt, sollte die Empfehlung immer zu Gunsten letzter ausfallen. Also besser direkt ohne s_o_t abreiten, dann ist man diesbezüglich von Anfang an sicher.

            Empfehlungen sind ja in Ordnung, aber man muss ja dazu nicht unbedingt Unwahrheiten und Gerüchte verbreiten.

            Wenn man den Code ausschließlich für sich selbst verwendet, mag das sicherlich nicht ganz so schlimm sein (allerdings auch wieder lästig). Spätestens bei Programmen für Andere oder Veröffentlichung; sei es nur auf einer Website als Tutorial oder Beispiel, sollte man IMO bereits davon absehen.

            Das sind alles Anwendungsfälle, die viele Anwender eher selten betreffen. Genau wie die Möglichkeit, dass man mal das DBMS wechseln muss. Ja, das passiert bei einer geschätzt verschwindend geringen Anzahl von Anwendern. Deswegen generell auf nützliche proprietäre Features zu verzichten, könnte auch zum eigenen Nachteil sein.

            Lo!

            1. Genau wie die Möglichkeit, dass man mal das DBMS wechseln muss. Ja, das passiert bei einer geschätzt verschwindend geringen Anzahl von Anwendern. Deswegen generell auf nützliche proprietäre Features zu verzichten, könnte auch zum eigenen Nachteil sein.

              Dafür setze ich eine Klasse ein, die meine Queries übersetzt und an die Datenbank schickt. Abgesehen davon, dass ich dadurch aktuell mehrere DBMS unterstützen kann, kann ich jederzeit auf Änderungen etc. Reagieren.

              <? hab ich aufm Testserver auch abgeschalten, wie vieles andere auch, damit ich meine Skripte mit Minimalanforderungen testen kann. Damit sollten sie auch auf Freespace laufen. Wenn ich besondere Features brauche, aktiviere ich sie geziehlt und nur für das eine Projekt.
              Damit versuche ich u.a. die Zukunftsfähigkeit sicherzustellen, falls Funktionen wegfallen.

        2. Hi!

          Ja, aber: fällt Dir ein Argument ein, welches für deren Verwendung spräche?

          Wenn man nicht mit XML arbeitet, ergibt sich keine Notwendigkeit, darauf zu verzichten. <?= ist kürzer als <?php echo und damit oftmals übersichtlicher. Wenn sie schon da sind, warum soll man sie austauschen, wenn es einem keine Punkte bringt?

          Tipparbeit dürfte heutzutage kaum mehr ein Argument sein - übersichtlicher finde ich es auch nicht.

          Das Thema ist uralt und da man u.U. (z.B: als Entwickler, Hobbybastler ...) keinen (direkten) Einfluß auf die Unterstützung dieser unseligen Notation hat, kann man von der Benutzung derselben nur abraten.

          Es reicht auch, auf neutrale Weise aufzuklären, und dann den Probleminhaber selbst entscheiden zu lassen. Sie schaden weit weniger als ihnen immer nachgesagt wird.

          Es geht nicht um möglichen Schaden: die Unterstützung dieser Notation ist nicht gewährleistet - die Anzahl der diesbezüglichen Fragen von Einsteigern spricht Bände!

          Die ASP-like Variante <% .. %> ist auch gestorben - so what?

          off:PP

          --
          "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
          1. Hi!

            Es geht nicht um möglichen Schaden: die Unterstützung dieser Notation ist nicht gewährleistet -

            Es geht also nur darum, dass die deaktiviert sein könnten. Die Unterstützung von einigen Extensions ist auch nicht überall gewährleistet und trotzdem werden sie beworben. Prominente Beispiele wären Multibyte-Strings und mysqli. Warum auch nicht? Sie sind ja nicht nur ausgeschaltet anzutreffen.

            die Anzahl der diesbezüglichen Fragen von Einsteigern spricht Bände!

            In diesem und den anderen Fällen spricht eher Bände, dass die Anwender überhaupt auf die Nase gefallen ist. Denn das zeigt, dass sie sich um die Konfiguration ihrer Installation überhaupt keinen Kopf gemacht haben. Viel wichtiger wäre es, dieses gleichgültige Verhalten anzukreiden und über die wirklich wichtigen Parameter aufzuklären.

            Die ASP-like Variante <% .. %> ist auch gestorben - so what?

            Die hat nie eine Rolle gespielt, ebensowenig wie die <script language="php"></script>. Nichtsdestotrotz könntest du mir dazu ja mal ein aktuelles offizielles Statement zeigen.

            Lo!

            1. Moin

              Ich bin bekanntermaßen anderer Meinung. Solche Funktionalitäten könnnen immer deaktiviert werden oder gar aus dem Sprachumfang verschwinden. Bekannte beispiele: Register_globels und aktuell ereg() und ereg_replace(), safe_mode, magic_quotes. Ich würde nie auf diese zusätzlichen Features vertrauen.

              Gruß Bobby

              --
              -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
              ### Henry L. Mencken ###
              -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
              ## Viktor Frankl ###
              ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
              1. Hi!

                Solche Funktionalitäten könnnen immer deaktiviert werden oder gar aus dem Sprachumfang verschwinden. Bekannte beispiele: Register_globels und aktuell ereg() und ereg_replace(), safe_mode, magic_quotes.

                Das machen sie aber nicht einfach so von heut auf morgen. Das wurde bisher stets langfristig angekündigt. Für short_open_tag ist solch eine Ankündigung bisher nicht an mein Ohr gedrungen.

                Ich würde nie auf diese zusätzlichen Features vertrauen.

                Das glaube ich dir nicht, denn dann müsstest du genauso konsequent bei allen anderen abschaltbaren PHP-Features sein.

                Lo!

                1. Hi!

                  Solche Funktionalitäten könnnen immer deaktiviert werden oder gar aus dem Sprachumfang verschwinden. Bekannte beispiele: Register_globels und aktuell ereg() und ereg_replace(), safe_mode, magic_quotes.

                  Das machen sie aber nicht einfach so von heut auf morgen. Das wurde bisher stets langfristig angekündigt. Für short_open_tag ist solch eine Ankündigung bisher nicht an mein Ohr gedrungen.

                  Nein - sie sind in PHP 6 auch leider nur 'deprecated'  - das macht nichts besser!

                  Ich würde nie auf diese zusätzlichen Features vertrauen.

                  Das glaube ich dir nicht, denn dann müsstest du genauso konsequent bei allen anderen abschaltbaren PHP-Features sein.

                  Das ist nun wirklich Quatsch - ich vertraue auf kein einziges Feature, welches nicht PHP-Core-*gesichert* ist - und wenn ich ein solches benötige, habe ich entsprechende Vorkehrungen zu treffen.

                  off:PP

                  --
                  "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
                  1. Hi!

                    Für short_open_tag ist solch eine Ankündigung bisher nicht an mein Ohr gedrungen.
                    Nein - sie sind in PHP 6 auch leider nur 'deprecated'  - das macht nichts besser!

                    Diese Aussage möchte ich gern mit einer offiziellen Quelle untermauert sehen.

                    Lo!

                    1. Moin

                      Diese Aussage möchte ich gern mit einer offiziellen Quelle untermauert sehen.

                      Also zur Diskussion stand es: http://wiki.php.net/rfc/shortags

                      Also ich vertrau wirklich nicht drauf wenns denn schon diskutiert wird

                      Gruß Bobby

                      --
                      -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
                      ### Henry L. Mencken ###
                      -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
                      ## Viktor Frankl ###
                      ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
          2. Hi there,

            Tipparbeit dürfte heutzutage kaum mehr ein Argument sein

            Warum? Findest Du in der Wirtschaftskrise leichter jemanden, der für Dich tippt?

            Das Thema ist uralt und da man u.U. (z.B: als Entwickler, Hobbybastler ...) keinen (direkten) Einfluß auf die Unterstützung dieser unseligen Notation hat, kann man von der Benutzung derselben nur abraten.

            Naja, während Du über "Sollen oder nicht sollen?" von short-Tags sinnierst und andere für Dich einen Wolf tippen lässt bin ich mit meinem Programm schon fertig. Ich mach jetzt einfach mit, weil ich grad Zeit hab und frag Dich, was an dieser Notation "unselig" ist? Ich (und viel andere Entwickler auch) hab in meinem ganzen Leben noch keine einzige Zeile eines XML-Dokuments benötigt oder geschrieben. So what? Ich mach mir ja auch keine Gedanken darüber, daß der Name irgendeiner Funktion, die ich gerade geschrieben habe, auf Suaheli eine grobe Beleidigung darstellen könnte. Oder andersrum: zu Tode gefürchtet ist auch gestorben...