bu olmamalıdır zaman php header fonksiyonu bir hata üretir

5 Cevap php

Im PHP 4.3.11 ile çalışan ve ben çalıştırdığınızda bir header, her zaman böyle bir hata ile yanıt

Warning: başlık bilgileri değiştirilemiyor - zaten tarafından gönderilen başlıklar (çıkışında d başladı: \ klasör \ file.php: 1) in d:\folder\file.php on line 2

Warning: Cannot modify header information - headers already sent by (output started at d:\folder\file.php:1) in d:\folder\file.php on line 3 Current PHP version: 4.3.11

Ben bu hatayı oluşturmak için kullanılan kod oldu

<?php
    header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");   // Date in the past

    echo 'Current PHP version: ' . phpversion();

    // prints e.g. '2.0' or nothing if the extension isn't enabled
    echo phpversion('tidy');
?>

Bu php etiketleri önce veya sonra boşluk ne satırsonu vardır, ve beklendiği gibi bir 5.x sürümünde aynı kod sadece php sürümünü döndürür.

Herhangi bir ipucu?

Şimdiden teşekkürler

Edit: Solved!: I've opened the file with western european encoding and deleted the BOM and it worked. Thanks all for your help!

5 Cevap

Eğer dosyanın başında bir UTF BOM var mı?

<?php gerçekten dosyasındaki ilk böylece PHP bloğunun önce hiçbir boş satır ve (örneğin UTF BOM gibi) görünmez karakterler olmadığından emin olun.

Dosya başka bir şey ama php kodu içermiyorsa eğer dosyanın sonunda boş alanlarda sorunu önlemek için php kapanış etiketi atlamak için tavsiye edilir

Eğer alıyorsanız hata tüm komut (diğer dosyalar dahil) () fonksiyonu çağrılır başlıktan önce bazı çıktı gönderiyor demektir.

Tüm dosyaları gözden geçirmek ve bunlardan herhangi veya son kapanış etiketinden sonra bazı boş alanlar cevapsız ?> (echo () veya print () ile) bir şey çıktısı olmadığını görmek gerekir

Bu ihtimal, ama (çok muhtemelen. htaccess) php.ini içinde auto_prepend_file tanımlamak için bir olasılık var.

http://at2.php.net/manual/en/ini.core.php - Bu her komut dosyası başında bir require() gibi davranır. Eğer phpinfo(); çıkışına bakarak bunu kontrol edebilirsiniz.

ama ben çok sorun utf-8 BOM olduğunu düşünüyorum.