Content-type funktioniert nicht in PHP
Ich habe einige Probleme mit einer PHP-Datei, die nicht richtig funktioniert. Der Content-type nicht zu bekommen, erhalten Sie von jedem browser überhaupt. Firebug interpretiert die Datei als text/html anstatt css. Hier ist die Datei :
<?php
header('Content-Type: text/css; charset=UTF-8');
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 'On');
/* CSS goes on from here */
Getestet habe ich um eine Zeile mit echo 'TEST';
bevor die header-Zeile, und wurde erwartet, um zu sehen, die klassischen "headers already sent" - Fehler, aber nichts angezeigt!
Normal .css-Dateien sind, funktioniert wie ein Charme jedoch.
Was kann ich tun, um zu lösen?
UPDATE:
Habe default_mimetype = "text/html"
zu default_mimetype = "text/css"
in php.ini und alle Seiten bekam sofort so interpretiert css, so dass es muss ein Weg gefunden werden, senden Sie einfach die css-Header für diese Datei 🙂
Die vollständige Datei von der Nachfrage des Johannes:
<?php
header('Content-Type: text/css; charset=UTF-8');
echo 'body {background-color: #000000; }';
?>
UPDATE #2:
Hinzufügen ini_set('default_mimetype', 'text/css');
auf die PHP-Datei behebt diese Datei, aber es löst nicht das Problem, die Ursachen dieser Fehler...
UPDATE #3:
Getestet hinzufügen AddType text/css .css
für beide .htaccess und Apache-Konfiguration. Immer noch kein Glück. Auch getestet, um zu senden Header getrennt vom charset: header('Content-Type: text/css');
- immer Noch kein Glück...
UPDATE #4:
Nach der erneuten Installation von Apache+PHP auf dem server, um zu sehen, ob das problem verschwindet, aber Nein. Same old, same old...
- Können Sie sehen, welche Header gesendet werden, um den Browser in Figrebug?
- Content-Type: text/html -
- Ich weiß das ist eine dumme Frage, aber schließen Sie die <?php vor der Ausgabe der css? Natürlich, wenn Sie echo der css, ignorieren Sie mich.
- Hi Matt! Yep! Die css-echo, danke!
- Danke industrial! Getestet habe ich den code und es gibt das css in Ordnung (und mit dem richtigen mime-Typ). Versuchen Sie 'display_errors' auf 'On' in php.ini. Es gibt definitiv einige funky Fehler aber nicht angezeigt wird. Edit: weißt du, wenn du mit mod_php oder FastCGI mit apache?
- Hi! Was ich sagen kann, ich bin mit mod_php. Sind die Fehler auf, aber nichts angezeigt 🙁
- Ok Jungs, hat niemand eine Idee der linken?
- Ok. Das Kopfgeld AUF!
- die aktuelle css wird an den browser gesendet ?
- Industrie: was ist die Dateiendung deiner Datei, css oder php?
- Die css-Datei wird gesendet, aber Lesen als HTML wie beschrieben.
- Die css-Datei wird geladen, indem Sie eine php-Datei, so dass die stylesheet verknüpft ist, eine php-Datei.
- Und Sie unbedingt, auf jeden Fall, cross-your-heart-und-Hoffnung-zu-sterben, haben nicht alle whitespace-Zeichen vor der
<?php
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überprüfen Sie Ihre php.ini-Datei für die output_buffering Einstellung. Wenn es nicht auf "off" eingestellt als PHP automatisch tun, output buffering für Sie. Einstellen, dass zu off-und echo-etwas vor dem header-Befehl, und Sie sollten sehen, die "klassischen Fehler".
Sollten Sie nicht verwenden die Schließung ?>. Ich weiß, dies ist ein umstrittener Vorschlag, aber zu viele Male, die Menschen fügen Sie eine Rückkehr und/oder Leerzeichen nach, die bekommt die Ausgabe an den browser (vor dem header). Es gibt sehr wenige Fälle, wo es nicht verwenden, es würde zu einem problem führen.
?>
am Ende einer Datei.Content-Type
Eigenschaft kann überschrieben werden, in der .htaccess-Datei(en). (z.B.ForceType
undAddType
)der Grund ist, weil die
header
Funktion funktioniert nur, wenn es das erste ist, genannt zu werden!Wenn Sie einen
echo
vor, der content-type wird automatischtext/html
versuchen, zu drucken, einen CSS-code nach dem header, um zu testen, ob es funktioniert tatsächlich.
Lesen auf dieser Seite für mehr infos
EDIT: habt Ihr euren posten ? 🙂
default_mimetype
des php.ini aus dem code...Dies ist in der Regel verursacht durch einen schwerwiegenden Fehler (ie, syntax-Fehler), die bewirkt, dass das Skript Abbrechen, bevor Sie den code ausführen (vor display_errors kann über ini_set() zur Laufzeit). Versuchen display_errors in der php-Konfigurationsdatei (php.ini).
Vielleicht die Funktion
header()
deaktiviert ist, in deiner Konfiguration?Test:
Kann es sich lohnen, die überprüfung mit curl, um zu sehen, was überschriften sind tatsächlich gesendet wird.
Versuchen, diese von einer Befehlszeile aus, und überprüfen Sie die "text/css":
Je nach browser-request-Header, PHP könnte auch sein, das senden der Ausgabe Gzip-Verwendung von output buffering. In der PHP-Datei, versuchen Sie, diese zu prüfen
ob_gzhandler
.Wenn es aktiviert ist, aktivieren Sie für
zlib.output_compression
im php.ini oder der Apache Konfiguration.Fand ich die komplette Datei eingerückt ist.
Weil der Einzug in Zeile 1 ausgegeben, 4 Räume, daher der header wird nicht funktionieren.
Diese klingt wie dein webserver interpretiert das Skript als eine normale Datei. Hat es einen .php-Erweiterung und andere .php Dateien funktionieren wie erwartet?
Sieht vollkommen ok und die Zeile mit der
echo
sollte auf jeden Fall eine Warnung generiert. Könnte es sein, dass Sie Bearbeiten die falsche Datei?Können Sie versuchen
Content-Style-Type: text/css
Sehen, die unten aus dem hier
<META http-equiv="Content-Style-Type" content="text/css">
Edit:
In der link , es wissen hinzufügen
AddType text/css .css
im apache-config-Datei.Vielleicht können Sie es versuchen
Edit2
Schauen Sie sich für 'css' an dieser link. Hatte jemand das selbe problem wie du. Versuchen Sie das senden der header ohne die charset -
Edit 3
Es war ein post über einige Formen nicht übermitteln keine Daten, da von einem Programm namens AVG Linkscanner. Seit der Neuinstallation von Apache + php und ich nehme an, Sie hat nicht neu installieren das OS, so können Sie vielleicht untersuchen auf diese/versuchen Sie, durch drehen einige Dienstprogramme/plugs-ins aus.
Wild guess : öffnen Sie Ihre Datei mit etwas, was anzeigen würde jeder BOM. Wenn Sie sehen seltsame Zeichen vor
<?php
haben Sie Ihr problem. Überprüfen Sie Ihre aktuellen editor-Optionen zum speichern von UTF-8-Datei und machen es zu speichern ohne BOM.Vielleicht gibt es Probleme mit caching.
Versuchen Sie dies:
Funktioniert für mich auf eine out-of-the-box XAMPP-installation und firefox - firebug meldet richtige content-type.
output_buffering = Off
in php.ini war der Grund für mich, warum verschicktContent-Type = text/html
. Eine Einstellung von 1 löst.