Server verschluckt sich an XML-Deklaration
Furrytail
- php
Hallo,
ich habe eine XHTML-Datei die als .php auf dem Server liegt und auch von PHP interpretiert werden soll weil sie weiter unten ein paar PHP-Teile enthält. Das ging bisher alles gut, bis ich dem Vorschlag Validoms gefolgt bin und als erste Zeile ein
<?xml version="1.0" encoding="iso-8859-1"?>
eingefügt habe.
Sobald das drin ist, bekomme ich aber vom Server nur einen Code 500, Internal Error. Ich vermute mal dass das an PHP liegt. Der soll sich doch gefälligst an <?php halten und alles andere ignorieren.
Was kann ich dagegen tun?
Grüße,
Martin
Hallo Martin,
Sobald das drin ist, bekomme ich aber vom Server nur einen Code 500, Internal Error.
"<?" wird wohl als öffneder PHP-Tag angesehen (short tag). Probier mal, das mit echo auszugenen:
echo '<?xml version="1.0" encoding="iso-8859-1"?>';
Alex
echo $begrüßung;
Der soll sich doch gefälligst an <?php halten und alles andere ignorieren.
Dann musst du das entsprechend konfigurieren: short_open_tag. Vorausgesetzt der Provider lässt sich das tun. Ansonsten bleibt nur die Ausgabe als String.
echo "$verabschiedung $name";
Hallo,
Dann musst du das entsprechend konfigurieren: short_open_tag.
Vorausgesetzt der Provider lässt sich das tun.
Ah tatsächlich sowas. Das hatte ich fast vermutet, wusste aber einfach nicht, nach welchem Begriff ich suchen soll.
Leider kann ich es nicht in der .htaccess abschalten da der Provider PHP als CGI laufen lässt.
Ansonsten bleibt nur die Ausgabe als String.
Oder Ausschalten per ini_set was beides eines Skriptbereichs bedarf, grummel.
Aber danke, auch Alex, für die Lösung.
Gruß,
Martin
echo $begrüßung;
Dann musst du das entsprechend konfigurieren: short_open_tag.
[...]
Oder Ausschalten per ini_set was beides eines Skriptbereichs bedarf, grummel.
Nein. Etwas weiter oberhalb der verlinkten Stelle ist short_open_tag als PHP_INI_PERDIR gekennzeichnet. Das ist auch sinnvoll so, da der Parse-Vorgang bereits abgeschlossen ist, wenn es zur Ausführung des PHP-Codes und damit auch zu ini_set() kommt. Allenfalls für erst zur Laufzeit inkludierte Scripte könnte eine Änderung Wirkung zeigen.
echo "$verabschiedung $name";
Hallo,
Nein. Etwas weiter oberhalb der verlinkten Stelle ist short_open_tag als PHP_INI_PERDIR gekennzeichnet. Das ist auch sinnvoll so, da der Parse-Vorgang bereits abgeschlossen ist, wenn es zur Ausführung des PHP-Codes und damit auch zu ini_set() kommt. Allenfalls für erst zur Laufzeit inkludierte Scripte könnte eine Änderung Wirkung zeigen.
Aha, deshalb ging es dann doch nicht als ich es ausprobierte. Mir war nicht ganz klar was PHP_INI_PERDIR heißt.
Glücklicherweise fand ich dann heraus, dass mein Provider es zulässt, eine php.ini ins Rootverzeichnis meines Accounts zu legen. Darin geht das Ausschalten der Option problemlos.
Danke,
Martin
echo $begrüßung;
Mir war nicht ganz klar was PHP_INI_PERDIR heißt.
Am Ende der Liste aller php.ini Direktiven gibt es eine Erklärung zu den Werten der Changable-Spalte.
Glücklicherweise fand ich dann heraus, dass mein Provider es zulässt, eine php.ini ins Rootverzeichnis meines Accounts zu legen. Darin geht das Ausschalten der Option problemlos.
Beachte bitte, dass diese php.ini (zumindest bei 1&1) nicht ergänzend sondern allein gilt. Wenn du nur die eine Direktive drinstehen hast, sind alle anderen Werte auf PHPs Default-Werte zurückgesetzt. Werte aus der globalen php.ini sind damit nicht mehr aktiv.
echo "$verabschiedung $name";
Hallo.
Das eigentliche Problem sollte ja bereits gelöst sein. Zu ergänzen wäre, dass der Vorschlag, die XML-Deklaration voranzustellen, dir keinerlei Vorteile einbringt, sofern du dein HTML nicht als XML verarbeiten lässt, sondern mit dem MIME-Typen text/html auslieferst. Im Gegenteil erwartet der IE6 keine Angaben vor der Dokumententyp-Deklaration und begibt sich folgerichtig in den Quirksmode.
MfG, at