<?xml Headerproblem, da warscheinlich verkürtzer <?php

Hallo,

ich habe da ein Problem mit meinem Header:
Ursprünglich, sieht der so aus:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="de" lang="de">
    <head>

Daraufhin bekomme ich diese Fehlermeldung:
Parse error: syntax error, unexpected T_STRING in /users/alekelpragh/www/index.php on line 1

Nach etwas googlen, bekam ich den Tip, dass es eventuell an der verkürzten schreibweise von php liegt, dass er von <?xml das <? schon als beginn von phpcode verwendet und mit xml dann nichts mehr anfangen kann.

Darauf hin, habe ich den Kopf wie folgt geändert:

<?php header("xml version=\"1.0\" encoding=\"utf-8\"  "); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="de" lang="de">
    <head>

Nun bekomme ich aber nen Error von blaced:
bplaced.net (check .htaccess) Interner Fehler, code 500. Internal server error, code 500. Contact service provider

Was mache ich denn falsch? In der SuFu habe ich hier nichts endeckt. Aber warscheinlich ist dieses Thema nen alter Hut und ich verwende die falschen Suchbegriffe… ich bitte um nachsicht und danke euch schonmal für eure Hilfe

Gruß Manu

Du verwechselst eine XML-Headerzeile, die als Textinhalt in einer Datei steht, mit einem HTTP-Header …

Mit Datei meinst du die UTF-8?
Was muss ich denn korrigieren?

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

kurz und ekelhaft, oder

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

oder Short-Tags einfach per .user.ini deaktivieren.

UTF-8 ist eine Zeichenkodierung.

Mit „Datei“ meine ich genau das - eine Datei.
In einer XML-Datei steht am Anfang ein XML-Prolog.

(Wobei es fachlich korrekter wäre, hier von einer Ressource anstatt von einer Datei zu sprechen, wenn das ganze über HTTP ausgeliefert wird. Aber das tut hier erst mal weniger zur Sache.)

Zunächst einmal solltest du dir klar machen, was der Unterschied zwischen reinem Text-Inhalt (solchen stellt der XML-Prolog dar) und einem HTTP-Header ist.

Das sollte auch funktionieren:

ich persönlich bevorzuge (schaut für mich sauberer aus) die variante

Danke für die vielen Antworten!

michi7x7 schrieb etwas von deaktivieren des short_open_tag (http://www.php.net/manual/en/ini.core.php#ini.short-open-tag) in der User.ini
Das würde ich gerne machen, da mein lokaler phpServer dies auch nicht aktiviert hat.

Aus nachfolgender Quelle entnehme ich, dass ich eine “user.ini” in meinem Rootverzeichnis erstellen kann.
Um die Angaben in der Datei global für alle meine Codes gültig zu machen.
Doch bin ich mir nicht im klaren, nach welchem syntax dies geschehen soll. Ich finde php.net sehr verwirrend.
Aus dieser Quelle: http://php.net/manual/de/configuration.file.per-user.php

@ chrisb: Jetzt weis ich auch, wovon du sprichst. Ich bin noch ein Anfänger, was ja offensichtlich ist
und wühle mich gerade erst durch PHP und MySQL.

Mit “Headerangaben” bezog ich mich auf diesen Link: http://tut.php-quake.net/de/communication.html
Um genau zu sein, auf diese Pasage:

.user.inishort_open_tag = Off

jup, läuft

Danke schön