Ok, vielleicht nicht so rätselhaft, aber hier ist es.
Ich habe rumgemacht und das bemerkt, indem ich nur <?php
in eine Datei eingegeben habe, nur das, kein Leerzeichen danach, sonst nichts als das Tag, wirft einen Parsefehler.
Mit einem einzigen Leerzeichen funktioniert es gut. Ich habe mich gefragt, ob irgendjemand weiß, warum der Parser erstickt, denn es ist völlig in Ordnung, das schließende Tag zu ignorieren. Danke.
Die PHP-Dokumentation lautet:
In PHP 5.2 und früher erlaubt der Parser das Öffnen von
<?php
nicht Tag ist das einzige Ding in einer Datei. Dies ist ab PHP 5.3 erlaubt.
Wenn in PHP 5.3% short_open_tags
auf On
in Ihrer php.ini
-Datei gesetzt ist, wird der Fehler immer noch angezeigt.
Dies beantwortet in der PHP-Dokumentation für grundlegende Syntax :
In PHP 5.2 und früher erlaubt der Parser das Öffnen von
<?php
nicht Tag ist das einzige Ding in einer Datei. Dies ist ab PHP 5.3 erlaubt.
Es scheint jedoch, dass das öffnende Tag + Leerzeichen vom OP erlaubt ist (d. h. ist nicht das einzige Ding in einer Datei ). Aus den Kommentaren geht hervor, dass dies bei Distro-Versionen oder anderslautenden gepatchten nicht der Fall ist.
Meine PHP Version:
%Vor%Der betreffende Code:
%Vor% Hinzufügen von mehr neben <?php
:
oder
%Vor%und dann ein Leerzeichen:
%Vor%(schließlich leere Ausgabe).
Diese PHP-Version gibt mir keinen Parse error: syntax error, unexpected $end
-Typ der Nachricht für die obigen Beispiele, aber es macht folgendes:
Ich hoffe, es hilft. In meinen Augen sieht das so aus, dass die Eingabe nur als Text behandelt wird, bis ein Leerzeichen auf die <?php
Öffnungssequenz folgt.
Tags und Links parsing php php-internals