3 Stimmen

PHP-Fehler in der .xml-Datei?

OK erstens habe ich diese Zeile zu meiner .htaccess-Datei hinzugefügt, damit die php-Engine den php-Code in der .xml-Datei parst:

AddType application/x-httpd-php .php .php3 .phtml .html .xml

Wenn ich danach eine .xml-Datei anzeige, erhalte ich diesen PHP-Fehler:

Parse-Fehler: Parse-Fehler, unerwartetes T_STRING in /var/www/vhosts/mydomain.com/httpdocs/test.xml in Zeile 1

Aber Zeile 1 ist noch nicht einmal php, denn dies ist Zeile 1:

<?xml version="1.0" encoding="utf-8"?>

Kann mir jemand sagen, was das Problem ist?

Danke.

10voto

Andrei Serdeliuc ॐ Punkte 5678

Das liegt daran, dass <? ist der kurze Eröffnungs-Tag für php.

Versuchen Sie <?php echo '<?xml version="1.0" encoding="utf-8"?>'; ?>

1 Stimmen

Ich hatte sogar mit dieser Lösung Probleme - möglicherweise müssen Sie Folgendes tun <?php echo '<' . '?xml version="1.0" encoding="utf-8" ?' . '>'; ?>

0 Stimmen

Was pix0r sagte. Das Problem mit Apikots Antwort ist die '?>'-Sequenz, die in der Zeichenkette erscheint, während in PHP die Zeichen '?>' niemals in einer Zeichenkette erscheinen sollten.

0 Stimmen

... interessanterweise toleriert der PHP-eigene Parser dies. Der Grund, warum ich es vermeide, ist, dass Texteditoren oder IDEs mit Syntaxhervorhebung dies oft nicht tun.

6voto

danieltalsky Punkte 7346

Ja, traurig aber wahr, es ist der Doctype, der als der PHP-öffnende kurze Tag gesehen wird. Sie haben ein paar Optionen:

  1. Nehmen Sie XML aus der Liste der Dateien heraus, die PHP in der .htaccess-Datei auswerten soll

  2. Verpacken Sie alle Ihre XML-Deklarationen in PHP:

    <?php print('<?xml version="1.0" encoding="utf-8"?>'); ?>

  3. Ausschalten short_open_tag in .htaccess oder der php.ini. Das heißt, PHP akzeptiert nur <?php als ein öffnendes Tag und ignoriert <? .

0 Stimmen

Wenn Sie möchten, dass die XML-Datei auch mit dem darin enthaltenen PHP wohlgeformtes XML bleibt, blenden Sie das abschließende '?>' aus. z. B. print('<?xml version="1.0" encoding="utf-8"?'.'>');

0 Stimmen

Würde dies wirklich dazu führen, dass es ein gültiges XML-Dokument auf der Serverseite bleibt? Ich glaube nicht, dass ein PHP-Open-Tag als erstes gültiges Zeichen die Aufgabe erfüllen würde. Ich denke, wenn Sie diesen Ansatz können Sie nicht machen es ein gültiges XML-Dokument auf dem Server... nur auf die Ausgabe.

0 Stimmen

Ja, ein PHP open-Tag in der Langform ergibt eine XML-Verarbeitungsanweisung. Es ist durchaus zulässig, einen PI (oder Kommentar) außerhalb des Root documentElements zu haben.

4voto

bobince Punkte 512550

Alternative 4, zusätzlich zu Daniels: die <?xml...?>-Deklaration komplett weglassen.

Da "1.0" und "utf-8" die Standardwerte für XML sind, ist dies völlig überflüssig; die XML-Deklaration hier einzuschließen, bringt Ihnen nichts.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X