Christoph Schnauß: unerklärliche Fehlermeldung bei XHTML

hallo Forum ;-)

Beim Umstellen einiger Dateien von HTML auf XHTML bekomme ich plötzlich eine sehr eigentümliche Fehlermeldung  -  in allen Browsern:
Parse error: parse error, unexpected T_STRING in E:\root\test.htm on line 1
im Server-log steht entsprechend:
[error] [client 192.168.0.1] PHP Parse error:  parse error, unexpected T_STRING in E:\root\test.htm on line 1, referer: http://ph1/

Ich habe Apache 2.0.35 installiert und PHP 4.2.0, bisher gab es da auch keine Konflikte. In der test.htm gibts auch keinen PHP-Code. Wenn ich die XHTML-Deklarationen wieder herausnehme, wird der bisherige HTML-Code auch anstandslos verarbeitet. Irgendwas scheint PHP also an XHTML nicht zu gefallen, aber ich finde keinen Hinweis, was das sein könnte. Hat jemand einen Hinweis ?

Grüße aus Berlin

Christoph S.

  1. Hi,

    Beim Umstellen einiger Dateien von HTML auf XHTML bekomme ich plötzlich eine sehr eigentümliche Fehlermeldung  -  in allen Browsern:
    Parse error: parse error, unexpected T_STRING in E:\root\test.htm on line 1
    im Server-log steht entsprechend:
    [error] [client 192.168.0.1] PHP Parse error:  parse error, unexpected T_STRING in E:\root\test.htm on line 1, referer: http://ph1/

    Ich habe Apache 2.0.35 installiert und PHP 4.2.0, bisher gab es da auch keine Konflikte. In der test.htm gibts auch keinen PHP-Code. Wenn ich die XHTML-Deklarationen wieder herausnehme, wird der bisherige HTML-Code auch anstandslos verarbeitet. Irgendwas scheint PHP also an XHTML nicht zu gefallen, aber ich finde keinen Hinweis, was das sein könnte. Hat jemand einen Hinweis ?

    Endlich kann ich dir auch mal helfen ;-)
    Ich nehme an, dass bei dir .htm-Dateien auch mit PHP geparsed wer-
    den. Du hast nicht zufällig in der ersten Zeile etwas wie

    <?xml version="1.0" encoding="ISO-8859-15"?>

    stehen? Das musst du zu

    <?="<?xml version="1.0" encoding="ISO-8859-15"?>\n"?>

    machen.

    Bye,
    Peter

    1. hallo,

      <?="<?xml version="1.0" encoding="ISO-8859-15"?>\n"?>

      tatsächlich, das wars, danke. Ich hatte es bereits mit einer einfachen Maskierung versucht, also mit den Backslashes, daß das Fragezeichen aber "verdoppelt" werden müßte, war mir nicht bekannt.
      Übrigensa gabs den FeEhler auch erst, als ich die XHTML-Datei über den lokalen Webserver aufgerufen habe; beim "normalen" Öffnen per Doppelklick sah noch alles wie gewohnt aus  -  naja, da ist ja dann PHP noch nicht aktiv.

      Grüße aus Berlin

      Christoph S.

  2. Beim Umstellen einiger Dateien von HTML auf XHTML bekomme ich plötzlich eine sehr eigentümliche Fehlermeldung  -  in allen Browsern:
    Parse error: parse error, unexpected T_STRING in E:\root\test.htm on line 1
    im Server-log steht entsprechend:
    [error] [client 192.168.0.1] PHP Parse error:  parse error, unexpected T_STRING in E:\root\test.htm on line 1, referer: http://ph1/

    Ich habe Apache 2.0.35 installiert und PHP 4.2.0, bisher gab es da auch keine Konflikte. In der test.htm gibts auch keinen PHP-Code.

    Naja, PHP wird durchaus über das "<?" vom "<?xml version="1.0"?>" stolpern können, das doch sicherlich in Deiner XHTML-Datei ganz oben steht. PHP-Code fängt nunmal auch mit <? an (wenn short_open_tag eingeschaltet ist).

    Irgendwas scheint PHP also an XHTML nicht zu gefallen, aber ich finde keinen Hinweis, was das sein könnte. Hat jemand einen Hinweis ?

    Ich möchte mal behaupten, daß Dein Problem nicht XHTML oder PHP ist, sondern die Apache-Konfiguration. Denn eigentlich sollte der PHP-Interpreter eine .htm-Datei garnicht vom Webserver vorgesetzt bekommen.

    Hast Du an den Einstellungen Dateierweiterungen<->Handler rumgespielt? Es gibt ja durchaus Leute, die ihre Dateien nicht umbenennen wollen, warum auch immer..

    Unter Umständen geht Apache 2 auch neue Wege bei den Handlern, ich habe mich damit noch nicht beschäftigt.

    Gruß,
      soenk.e

    1. hi,

      Naja, PHP wird durchaus über das "<?" vom "<?xml version="1.0"?>" stolpern können

      richtig, siehe unten. Eigentlich eine Sache, auf die man selber kommen sollte

      Ich möchte mal behaupten, daß Dein Problem nicht XHTML oder PHP ist, sondern die Apache-Konfiguration. Denn eigentlich sollte der PHP-Interpreter eine .htm-Datei garnicht vom Webserver vorgesetzt bekommen.

      Daß ich gelegentlich am Apache herumschraube, ist kein Geheimnis. Aber genau deswegen setze ich ihn eigentlich immer auf eine minimale funktionsfähige "Standardkonfiguration" zurück, wenn ich Fehler kriege  -  um herauszufinden, ob meine Basteleien dran schuld waren.

      Hast Du an den Einstellungen Dateierweiterungen<->Handler rumgespielt? Es gibt ja durchaus Leute, die ihre Dateien nicht umbenennen wollen, warum auch immer..

      Gar so rücksichtsvoll oder zögerlich bin ich nicht ;-)

      Unter Umständen geht Apache 2 auch neue Wege bei den Handlern, ich habe mich damit noch nicht beschäftigt.

      So weit ich das bisher beurteilen kann, gibts zumindest für die Einstellungen in der httpd.conf keine Unterschiede zur 1.3er-Serie. Sonst gibt es allerdings ein paar "neue Wege"

      Grüße

      Christoph S.

      1. Hast Du an den Einstellungen Dateierweiterungen<->Handler rumgespielt? Es gibt ja durchaus Leute, die ihre Dateien nicht umbenennen wollen, warum auch immer..
        Gar so rücksichtsvoll oder zögerlich bin ich nicht ;-)

        Tja, dann kann ich Dir nur raten, mal in allen Apache-Einstellungen nach "php", ".htm", "AddType", "Action", "AddHandler" und "SetHandler" zu suchen, irgendwo muß da ja eine Verbindung auftauchen (vielleicht auch über einen Umweg). Man könnte auch das LoadModule/AddModule für PHP rausnehmen, IMHO müsste der Apache sich dann ja bei den Zuweisungen zum PHP-Handler beschweren.

        Alternative Krücke für Ungeduldige: short_open_tags in PHP ausschalten, dann sucht er nur noch nach <?php und kann sich dementsprechend nicht mehr über <?xml beschweren.

        Gruß,
          soenk.e

        1. Alternative Krücke für Ungeduldige: short_open_tags in PHP ausschalten, dann sucht er nur noch nach <?php und kann sich dementsprechend nicht mehr über <?xml beschweren.

          Der Tip ist gut.

          Aber ich hab nochwas: gelegentlich habe ich ja ein nicht ganz unbegründetes Mißtrauen, wenn auf der Windows-Kiste was nicht so recht will. Dann schalte ich auf ein anderes Betriebssystem um und prüfe nochmal nach  -  hab ich hier auch getan. Unter FreeBSD habe ich ebenfalls Apache 2.0.35 und PHP 4.2.0 laufen, die Handler-Einstellungen in der httpd.conf sind identisch und für PHP habe ich extra überprüft, obs dieselbe Konfiguration hat. Also hätte dort derselbe Fehler auftreten müssen  -  tat er aber nicht.

          Grüße retour

          Christoph S.

          1. Hi,

            Aber ich hab nochwas: gelegentlich habe ich ja ein nicht ganz unbegründetes Mißtrauen, wenn auf der Windows-Kiste was nicht so recht will. Dann schalte ich auf ein anderes Betriebssystem um und prüfe nochmal nach  -  hab ich hier auch getan. Unter FreeBSD habe ich ebenfalls Apache 2.0.35 und PHP 4.2.0 laufen, die Handler-Einstellungen in der httpd.conf sind identisch und für PHP habe ich extra überprüft, obs dieselbe Konfiguration hat. Also hätte dort derselbe Fehler auftreten müssen  -  tat er aber nicht.

            Fakt ist, dass dein Windows-Apache .htm-Dateien an den PHP-Inter-
            preter weitergibt, und der unter FreeBSD eben nicht.

            Bye,
            Peter

            1. Hoi,

              Fakt ist, dass dein Windows-Apache .htm-Dateien an den PHP-Inter-
              preter weitergibt, und der unter FreeBSD eben nicht.

              So weit waren wir auch schon ;-) Die Frage ist doch, warum nicht. Wie hast du
              denn dein Modul eingebunden? CGI? apxs2? Sind die Configurationen *wirklich*
              identisch? Hast du mal einen 'diff' gemacht?

              Gruesse,
               c.j.k

              1. hi Christian,

                Wie hast du
                denn dein Modul eingebunden? CGI?

                Ja, ist am bequemsten.
                Für mein WinXP habe ich eine PHP ... -installer.exe gezogen, und für die heißt es in der mitgelieferten "install.txt:
                "The Windows PHP installer is available from the downloads page at
                 www.php.net. This installs the CGI version of PHP"
                Auf FreeBSD hab ichs mit pkg-add gemacht und ebenfalls CGI

                Sind die Configurationen *wirklich*
                identisch?

                Was die in Frage kommenden Abschnitte angeht, sind sie es - daß die Pfade anders lauten (müssen) bedarf keiner gesonderten Erwähnung.

                Hast du mal einen 'diff' gemacht?

                Nix Auswertbares bzw. Auffälliges.

                aber jetzt gibts ja zwei Lösungsvorschläge, womit mein WinXP gut zurechtkommt (allerdings schließen beide Lösungen einander aus) und unter FreeBSD hab ich eh keinen Fehler gesehen, also ist das Problem erledigt  -  ich gebe aber zu, daß ich den "Systemunterschied" noch nicht ganz verstanden habe.

                Grüße

                Christoph S.

              2. Fakt ist, dass dein Windows-Apache .htm-Dateien an den PHP-Inter-
                preter weitergibt, und der unter FreeBSD eben nicht.

                So weit waren wir auch schon ;-) Die Frage ist doch, warum nicht. Wie hast du
                denn dein Modul eingebunden? CGI? apxs2? Sind die Configurationen *wirklich*
                identisch? Hast du mal einen 'diff' gemacht?

                Also eigentlich können sie garnicht identisch sein, schon wegen der Pfadangaben auf beiden Betriebssystemen.
                Insofern traue ich Christophs Vergleich nicht so recht. Sorry, aber es soll bitte hier keiner behaupten, seine Tastatur hätte keine Beißspuren (alternativ: QWERTZU-Abdruck auf der Stirn), weil er sich nicht schonmal so suuuuuuuuper sicher gewesen wäre.. ;)

                Aber das interessiert mich jetzt schon, woran es liegt. Prüf die beiden Konfigurationen doch bitte mal genau nach, Christoph!

                Gruß,
                  soenk.e