Gudrun: Blackout beim Test von PHP-Schnipsel

Hi, gibt es ein Tool ähnlich wie fiddle, mit dem man PHP-Codeschnipsel testen kann? Ich bekomme nämlich einen Fehler in

<?PHP>
if ($_SERVER['MyAkt_Sprache'] == 'en')
  {
   echo  <<<TXT
	  <a href="/de/" lang="de"><img src="/bilder/e.GIF" alt=""/>Deutsche Version</a>
   <h1>Überschrift</h1>
TXT;
  }
else
  {
   echo <<<TXT
	  <a href="/en/" lang="en"><img src="/bilder/d.GIF" alt=""/>English version</a>
    <h1>title</h1>
TXT;  
  }
?>

Fehler: TXT; } else { echo << .......

  1. @@Gudrun

    gibt es ein Tool ähnlich wie fiddle, mit dem man PHP-Codeschnipsel testen kann?

    Nach „php online compiler“ gesucht findest du einige.

    🖖 Live long and prosper

    --
    “In my home, the America I love, the America I've written about, that has been a beacon of hope and liberty for 250 years, is currently in the hands of a corrupt, incompetent and treasonous administration. Tonight, we ask all who believe in democracy and the best of our American spirit, to rise with us, raise your voices against authoritarianism, and let freedom reign.”
    — Bruce Springsteen, Manchester 2025-05-14
  2. Hallo

    gibt es ein Tool ähnlich wie fiddle, mit dem man PHP-Codeschnipsel testen kann?

    Dazu hat Gunnar ja schon etwas geschrieben.

    Ich bekomme […] einen Fehler in

    <?PHP>
    /* ... */
    ?>
    

    Ein (wenn nicht der) Fehler befindet sich schon am Beginn des Schnipsels. Das > hinter <?PHP gehört da nicht hin. Zudem sieht mir die Großschreibung „PHP“ verdächtig aus, aber ich finde dazu, ob das falsch ist oder nicht, ad hoc nichts. Diesen Fehler (der mit dem >) wirst du mit <?php statt <?PHP> jedenfalls mit Gewissheit los.

    Tschö, Auge

    --
    „Habe ich mir das nur eingebildet, oder kann der kleine Hund wirklich sprechen?“ fragte Schnapper. „Er behauptet, nicht dazu imstande zu sein“ erwiderte Victor. Schnapper zögerte (…) „Nun …“ sagte er schließlich, „ich schätze, er muss es am besten wissen.“ Terry Prattchett, Voll im Bilde
  3. Hallo Gudrun,

    ich habe das Snippet mal nach onlinephp.io kopiert, meine Standard-PHP-Spielplatz.

    Da bekomme ich für PHP-Versionen von 5.6 bis 8.4 immer

    Parse error: syntax error, unexpected token "if" in /home/user/scripts/code.php on line 2

    Ursache ist offenbar, dass PHP das > hinter <?php bereits als Größerzeichen interpretiert.

    Die von Dir genannte Fehlerausgabe sehe ich nicht.

    Aber wie auch immer, der Fehler wurde schon benannt: Kein > hinter <?php setzen

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Hi,
      wenn ich das Beispiel in der PHP Sandbox laufen lasse, wird der korrekte HTML-Code erzeugt. Wenn ich die gleiche Befehlsfolge mit cut&paste in meine HTML-Datei einfüge, kommt nach wie vor der Fehler.

      1. Wenn ich die gleiche Befehlsfolge mit cut&paste in meine HTML-Datei einfüge

        Nun ja. Um zu sehen, warum das fehlerhaft ist, bräuchten wir das Ergebnis genau dieses Handelns.

        Du zeigst den Nagel, klagst: „Oooooch, der hält nicht“ - für die Fehlersuche müssen wir aber sehen, wie Du ihn wo reinhaust.

        1. Hi,

          ich habe das Beispile auf das Nötigste verkleinert. Es sieht jetzt so aus:

          <html lang="de">
          <head>
            <meta charset="utf-8">
            <title>Test</title>
            <meta name="description" content="..................">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
          </head>
          <body>
          <?php
          if ('en' == 'en')
            {
             echo <<<TXT
          	  <a href="/de/" lang="de"><img src="/bilder/e.GIF" alt=""/>Deutsche Version</a>
                <h1>Überschrift</h1>
          TXT;
          
            }
          else
            {
             echo <<<TXT
          	  <a href="/en/" lang="en"><img src="/bilder/d.GIF" alt=""/>English version</a>
                <h1>title</h1>
          TXT;
          
            }
          ?>
          </body>
          </html>
          

          Das ist das Ergebnis

          Fehler

          1. Hallo,

            Das ist das Ergebnis

            Fehler

            mir scheint, dass der PHP-Teil gar nicht ausgeführt, sondern als gewöhnliches HTML interpretiert wird.

            Einen schönen Tag noch
             Martin

            --
            Manchmal kann man gar nicht so viel fühlen, wie man denkt.
            Und manchmal fühlt man so viel, dass man gar nicht denken kann.
            1. Falls dies der Fall sein sollte, woran kann dies liegen?

              1. Hallo,

                Falls dies der Fall sein sollte, woran kann dies liegen?

                z.b. daran, dass du es wie du schreibst "in deine Html-Datei" eingefügt hast, statt in deine php-Datei...

                Gruß
                Kalk

                1. Es gibt zahlreiche Beispiele, wie php in HTML eingebunden wird, z.B.

                  <!DOCTYPE html>
                  <html>
                  <body>
                  
                  <h1>Meine Webseite</h1>
                  
                  <p>Hallo, heute ist der <?php echo date('Y-m-d'); ?>.</p>
                  
                  </body>
                  </html>
                  
                  1. Hallo,

                    Es gibt zahlreiche Beispiele, wie php in HTML eingebunden wird, z.B.

                    ja, natürlich. Die Frage ist, hast du eins, das bei dir funktioniert?

                    Gruß
                    Kalk

                  2. ... und

                    Es ist überhaupt kein Problem, auf die Steuerbefehle ganz zu verzichten. Jede HTML-Datei ist automatisch eine gültige PHP-Datei. Ändert man die Endung einer .html Datei in .php, gibt der PHP-Interpreter einfach nur das unveränderte HTML zurück.

                    im Dokument

                    1. Hallo,

                      ... und

                      Es ist überhaupt kein Problem, auf die Steuerbefehle ganz zu verzichten. Jede HTML-Datei ist automatisch eine gültige PHP-Datei. Ändert man die Endung einer .html Datei in .php, gibt der PHP-Interpreter einfach nur das unveränderte HTML zurück.

                      im Dokument

                      d.h. dein Problem ist somit gelöst?

                      Gruß
                      Kalk

                    2. ... und

                      Es ist überhaupt kein Problem, auf die Steuerbefehle ganz zu verzichten. Jede HTML-Datei ist automatisch eine gültige PHP-Datei. Ändert man die Endung einer .html Datei in .php, gibt der PHP-Interpreter einfach nur das unveränderte HTML zurück.

                      im Dokument

                      Schade, dass in dem Dokument nicht steht, dass eine "gültige PHP-Datei" nicht immer auch als PHP-Datei verarbeitet wird.

                  3. Hallo,

                    Es gibt zahlreiche Beispiele, wie php in HTML eingebunden wird

                    ja, aber die meisten Webserver sind von Haus aus so vorkonfiguriert, dass sie den PHP-Teil nur ausführen, wenn die Endung auf .php lautet.

                    Schau mal in die Quelltext-Anzeige deines Browsers (meist Ctrl-U). Wenn du da noch den PHP-Code siehst, ist das ein sicheres Zeichen dafür, dass der vom Server ignoriert und einfach nur 1:1 an den Browser durchgereicht wurde.

                    Einen schönen Tag noch
                     Martin

                    --
                    Manchmal kann man gar nicht so viel fühlen, wie man denkt.
                    Und manchmal fühlt man so viel, dass man gar nicht denken kann.
                2. Hallo,

                  z.b. daran, dass du es wie du schreibst "in deine Html-Datei" eingefügt hast, statt in deine php-Datei...

                  Wie in anderen Beiträgen geschrieben, geht dies sehr wohl.

                  1. Hallo,

                    Hallo,

                    z.b. daran, dass du es wie du schreibst "in deine Html-Datei" eingefügt hast, statt in deine php-Datei...

                    Wie in anderen Beiträgen geschrieben, geht dies sehr wohl.

                    möchtest du hier theoretische Abhandlungen verfassen oder hast ein praktisches Problem, das du lösen möchtest?

                    egal, ich bin raus.

                    Gruß
                    Kalk

                    1. Man wird Dir doch widersprechen dürfen, wenn Du eine Behauptung aufstellst, die nicht richtig ist. Solche Aussagen sind nicht zielführend!

                      1. Hallo,

                        Man wird Dir doch widersprechen dürfen, wenn Du eine Behauptung aufstellst, die nicht richtig ist. Solche Aussagen sind nicht zielführend!

                        Wenn ich eine Behauptung aufstelle, die nicht richtig ist, darf man mir sehr gerne widersprechen.
                        Wenn ich hingegen ein Beispiel gebe, das letztlich sogar zur Klärung des Fehlers führt, darf man mir auch widersprechen. Die Verwunderung ist dann allerdings groß…

                        Gruß
                        Kalk

              2. Hi,

                Falls dies der Fall sein sollte, woran kann dies liegen?

                • du lädst das Dokument direkt aus dem Filesystem, nicht von einem PHP-fähigen Webserver
                • das Dokument hat die Endung .html (anstatt .php), der Server sieht daher keinen Grund, PHP anzuwerfen

                Das sind nur die naheliegenden Erklärungen, die mir auf die Schnelle einfallen.

                Einen schönen Tag noch
                 Martin

                --
                Manchmal kann man gar nicht so viel fühlen, wie man denkt.
                Und manchmal fühlt man so viel, dass man gar nicht denken kann.
                1. Hi,

                  Falls dies der Fall sein sollte, woran kann dies liegen?

                  • du lädst das Dokument direkt aus dem Filesystem, nicht von einem PHP-fähigen Webserver
                  • das Dokument hat die Endung .html (anstatt .php), der Server sieht daher keinen Grund, PHP anzuwerfen

                  Auch das war leider eine falsche Antwort!

                  1. Hallo,

                    Falls dies der Fall sein sollte, woran kann dies liegen?

                    • du lädst das Dokument direkt aus dem Filesystem, nicht von einem PHP-fähigen Webserver
                    • das Dokument hat die Endung .html (anstatt .php), der Server sieht daher keinen Grund, PHP anzuwerfen

                    Auch das war leider eine falsche Antwort!

                    dann rutsch mir doch den Buckel runter. Du hast ein Problem, du willst Hilfe. Dann musst du auch sachdienliche Informationen liefern. Am besten einen Link zur problematischen Seite, so dass man sich das "live" anschauen kann.

                    Ich bin auch raus.

                    Einen schönen Tag noch
                     Martin

                    --
                    Manchmal kann man gar nicht so viel fühlen, wie man denkt.
                    Und manchmal fühlt man so viel, dass man gar nicht denken kann.
                    1. Ach Ihr Ärmsten! Den Dateiinhalt hatte ich geliefert! Daran hättet Ihr nicht erkennen können, dass der Server meines Providers html nicht als php interpretiert. Und auf Deinen Buckel möchte ich lieber nicht klettern! Ich bin auch raus!

                      1. Hallo Gudrun,

                        wie sich jetzt herausstellt, ist der Dateiinhalt nicht das Problem.

                        Der NORMALFALL ist, dass eine Datei dann als PHP interpretiert wird, wenn sie auf .php endet. Das ist eine Einstellung im Webserver - bei PHP-fähigen Hostern ist die global gesetzt, außerhalb deines Webspace. Für eine .html Datei gilt NORMALERWEISE, dass es sich um statischen Inhalt handelt, der ohne weitere Verarbeitung rausgeschickt wird.

                        Wenn Du auf deinem Webserver etwas konfiguriert hast, so dass .html Dateien durch den PHP Interpreter genudelt werden, dann ist das etwas anderes, aber das musst Du dann selbst eingerichtet haben.

                        Aus deinem Satz

                        Wenn ich die gleiche Befehlsfolge mit cut&paste in meine HTML-Datei einfüge,

                        hätten wir schließen können, dass Du keine .php Datei für Dein Script verwendet hast. Haben wir nicht, sorry für die Scheuklappen.

                        Aber dann hast Du den Eindruck erweckt, als würde Dich die Frage der Dateiendung gar nicht interessieren bzw. als würdest Du ganz selbstverständlich erwarten, dass .html Dateien per PHP interpretiert werden. Durch einen missverstehbaren Wiki-Auszug wolltest Du das „beweisen“ und hast jede Antwort, die Dir das Gegenteil erklären wollte, zurückgewiesen. Du solltest Dich dann nicht wundern, dass Du damit auf Unwillen stößt.

                        Denn die entscheidende Formulierung hast Du ignoriert:

                        Ändert man die Endung einer .html Datei in .php

                        Ich habe das im Wiki mal deutlicher formuliert.

                        Rolf

                        --
                        sumpsi - posui - obstruxi
                      2. Ach Ihr Ärmsten! Den Dateiinhalt hatte ich geliefert! Daran hättet Ihr nicht erkennen können, dass der Server meines Providers html nicht als php interpretiert.

                        Tabellenkalk hat es am In- und Output richtig erkannt.

                        Es hat nur niemand gewusst, dass man Dir in einfacheren Worten erklären muss, dass es an der Dateiendung ".html" lag: Mit der Dateinamensendung ".php" sollte es also klappen. Benenne die Datei also einfach von „foo.html“ in „foo.php“ um.

                        Ach Ihr Ärmsten! ... Ich bin auch raus!

                        Erlebst Du das häufiger? „Fachidioten“ wissen natürlich, dass sie es sind, die für vermeintliche „Idioten“ gehalten werden. Aber auch von wem.

      2. Hallo Gudrun,

        in der Sandbox wird ein Fehler markiert, sieht man an dem roten X

        Ursache: Hinter dem Semikolon eines heredoc-Strings muss vor PHP 7.3 unmittelbar ein Zeilenende sein, du hast aber 2 Leerstellen.

        Warum die Sandbox bei PHP 8 einen Fehler zeigt, weiß ich nicht.

        Welche PHP Version hast Du bei Dir?

        Rolf

        --
        sumpsi - posui - obstruxi
        1. PHP 7.4.33

          1. Hallo Gudrun,

            dann sollten die spaces wurscht sein, aber nimm sie trotzdem mal weg.

            Wenn es das nicht ist, liegt ein anderer Fehler vor, der außerhalb des Snippets zu suchen ist

            Rolf

            --
            sumpsi - posui - obstruxi
  4. Was ich sehr nützlich finde, ist tio.run - nicht nur für php. Auch ideone.com ist interessant, aber für meinen Geschmack zuviel Werbung.

    Was php betrifft kann auch 3v4l.org ziemlich nützlich sein, da man damit ein Schnipsel in verschiedenen php versionen testen kann.