Bu soru burada zaten bir cevabı var:
Bu bir çok şey olabilir, ama diğerleri dediğim gibi, sonra sık sık değil çıktılanmasını alır ve sonra bir header()
a> komutu normalde ince olduğu gönderildiği yerde ortalıkta sadece bir boşluk var, ama İçerik geri (bu durumda potansiyel bir boşluk) göndermek için başlangıç.
Kullanma ob_start()
stops the output from going out right away by buffering it. So it's a potential solution, or at least way to diagnose where it's coming from as zodeus said.
O kaybetmek boşluk neden yaygın bir şey bu senaryo vardır.
global.php
<?php
$variable = 1;
$database = 'something else';
?> <-- A space here
<-- Or here
index.php
<?php
require('global.php');
$var = dosomething();
header('Location: http://www.example.com/');
?>
Düzeltmek için bir yolu global.php dosyanın sonunda?> Kaldırmaktır. Eğer PHP kodundan sonra örneğin HTML koyarak başlarsanız bu gerekmez, sadece yararlıdır. Yani olurdu:
<?php
$variable = 1;
$database = 'something else';
Ve require()
, uzay header()
önce çıkarılmaz ne zaman.
Sadece içerik çıkışı ve başlıkları benzer bir hata veriyor diğer yaygın durumda olan sorunları göstermek için. Eğer header()
kullanarak sonra yeniden yönlendirme işlemi durdurmak için unutmak zaman olur.
if ($notLoggedIn) {
header('Location: http://www.example.com/login.php');
}
echo 'Welcome to my website'; // this will be outputted,
// you should have an exit()
// right after the header()
Eğer istenmeyen için dosyaları kontrol ettiniz UTF-8 BOMs?
I think whats happening is one of the built in php functions is outputting something. I've seen this with a couple of the IMAP functions where they out put just a " " (space character) and it screws things up. You can thry tracking it down using Xdebug or the Zend debugger, but i f you have neither try wrapping output buffering around some of the functions you think may be cause it.
ob_start();
callYourFunction();
ob_end_clean();
Bir defada bu bir işlevi yapmak ve hata uzağa gittiğinde size neden sorun olduğu fonksiyon bileceksiniz, o zaman bir bug rapor edebilir ya da sadece bir kesmek gibi bırakın. Ama en azından o zaman soruna neden olduğunu hangi işlevi biliyorum.
Edit: The fact that is says your output is occurring on line 0 means that it's a C level function doing the output, not any code that's been written using PHP.
Hata başlıkları http iletinin gövdesinden önce yazılmış olmalıdır, çünkü bir şey, gönderilmek üzere başlıklarını zorlayacaktır çıkışı, gönderdiğini söyler.
Ben bulduk en yaygın sorun başlıklarında metindir. vis:
<?php // myfile.php
include 'header.php';
?>
ve header.php:
<?php // header.php
....
?>
Kapatılmasından sonra bir boşluk veya CR / LF '?>
' da - Burada ne göremiyorum boş olmasıdır. Php standart php etiketlerinin dışında bir şey html olarak çıktı olduğunu söylüyor, çünkü bu çıktı.
Çözümü '?>
' Eğer kapanış sonra her şeyi silmek için emin olun emin olmaktır