Içerik türü PHP çalışmıyor

11 Cevap php

Ben düzgün çalışmayan bir PHP dosyası ile bazı sorunlar var. Content-type tüm herhangi bir tarayıcı tarafından alınan almaz. Kundakçı text / html yerine css olarak dosyayı yorumlar. İşte dosya:

<?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 */

Ben başlık satırından önce echo 'TEST'; ile bir satır koymak için test ve hata klasik "zaten gönderildi başlıkları" görmeyi bekliyordum, ama hiçbir şey görünmüyor!

Normal. Css dosyaları ancak bir cazibe gibi çalışıyor.

Ben bu dışarı sıralamak için ne yapabilirim?

UPDATE: Did change default_mimetype = "text/html" to default_mimetype = "text/css" in php.ini and all pages got immediately interpreted as css, so there's must be a way to just send css headers for this file :)

John talep tam dosya:

    <?php
    header('Content-Type: text/css; charset=UTF-8');
    echo 'body {background-color: #000000; }';
    ?>

UPDATE #2: Adding ini_set('default_mimetype', 'text/css'); to the PHP file fixes this file, but it doesn't solve the issue that causes this fault...

UPDATE #3: Tested adding AddType text/css .css to both .htaccess and Apache config. Still no luck. Also tested to send headers separated from charset: header('Content-Type: text/css'); - Still no luck...

UPDATE #4: Have reinstalled Apache+PHP at the server to see if the problem goes away, but no. Same old, same old...

11 Cevap

Output_buffering ayar için php.ini dosyasını kontrol edin. PHP daha "kapalı" olarak ayarlanmış değilse sizin için otomatik olarak çıktı tamponlama yapıyor. Off o ayarlayın ve başlık komutundan önce bir şey yankı ve "klasik hata" görmelisiniz.

Sen kapanmasını kullanmak gerekir?>. Ben bu tartışmalı bir öneri olduğunu biliyorum, ama çok kez insan (başlıktan önce) tarayıcıya çıkışını alır ondan sonra bir geri dönüş ve / veya boşluk ekleyin. O bir sorun neden olur kullanmayan çok az vaka vardır.

Bu çağrılacak ilk ise header fonksiyonu sadece çalışır çünkü nedeni!

Eğer koyarsanız bir echo önce, içerik türü otomatik hale text/html

aslında çalışıp çalışmadığını test etmek başlığından sonra bir CSS kodunu yazdırmayı deneyin.

this page daha fazla bilgiler için okuyun

EDIT: Eğer yazıyı değiştirmek mi? :-)

(Display_errors zamanında ini_set () aracılığıyla ayarlanabilir önce) Bu genellikle komut dosyası kodunun herhangi önce iptal etmek için neden bir ölümcül hata (yani, sözdizimi hatası) neden olduğu yürütmek olduğunu. Php config dosyasında (php.ini) in display_errors değiştirmeyi deneyin.

Belki header() konfigürasyonunuzdaki fonksiyonu devre dışı bırakılır?

Testi:

print ini_get('disable_functions');

Ben tam dosya girintili buldu.

    <?php
    header('Content-Type: text/css; charset=UTF-8');
    echo 'body {background-color: #000000; }';
    ?>

1. satırda girinti 4 boşluk duyulur çünkü, bu nedenle, başlık çalışmaz.

Lütfen webserver normal bir dosya olarak komut yorumladığı gibi bu sesler. Bir. Php uzantısı var ve beklendiği gibi diğer. Php dosyaları çalışır?

Mükemmel Tamam görünüyor ve birlikte çizgi echo kesinlikle bir uyarı oluşturmak gerekir. Eğer yanlış dosyayı düzenleme olabilir misin?

Sen Content-Style-Type: text/css deneyebilirsiniz

here arasındaki aşağıya bakın

<META http-equiv="Content-Style-Type" content="text/css">

The default style sheet language may also be set with HTTP headers. The above META declaration is equivalent to the HTTP header:

Content-Style-Type: text/css

Edit:

At the link , it's mentionned to add AddType text/css .css in the apache config file. Maybe you can give it a try

Edit2 Look up for 'css' at this link. Someone had the same problem as you. Try sending the header without the charset

I recently had a hair-threatening problem with Firefox and XHTML 1.0 transitional.

It worked fine with other browsers, and also with HTML 4.1.

To cut a long story short, PHP-generated JS and CSS files were still being reported by the headers as text/html, while in the HTML they were text/css and application/javascript; Firefox having been told the page was XHTML 1.0 became anal-retentive and refused to style the page. (I think the JS still worked but I fixed it anyway.)

Çözüm:

header('Content-type: text/css'); and header('Content-type: application/javascript');

Edit 3 There was a post about some forms not submitting any data because of an utility called AVG Linkscanner. Since you have reinstalled Apache + php and I assume you didn't reinstall the OS, so you can maybe investigate on this/try by turning some utilities/plugs-ins off.

Bu curl aslında gönderilen ediliyor ne başlıkları görmek ile kontrol değerinde olabilir.

Bir komut satırından bu deneyin ve "text / css" için kontrol edin:

curl -I http://example.com

Tarayıcınızın istek başlıklarına bağlı olarak, PHP de çıktı tamponlama kullanarak gzip'li çıktı gönderme olabilir. PHP dosyasında, ob_gzhandler denetlemek için bu deneyin.

print_r(ob_list_handlers());

Etkinse, php.ini veya Apache yapılandırmasında zlib.output_compression için kontrol edin.

Tahmindi: Herhangi bir BOM gösterilecek bir şey ile dosyayı açın. Daha önce bazı garip karakterler görürseniz <?php Eğer sorunu var. UTF-8 dosya kaydetmek ve BOM olmadan onları kurtarmak yapmak için geçerli editörü seçeneklerini kontrol edin.

Belki önbelleğe alma ile sorunları vardır.

Bu deneyin:

header('Content-type: text/css');
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");

echo 'body {background-color: #000000; }';

Kundakçı raporlar doğru içerik türü - kutusu XAMPP kurulumu ve firefox dışı bir benim için çalışıyor.