我的代碼很簡單:headers_sent()返回false,但頭部被送到
<!DOCTYPE html>
<html>
<head>
...
<?php var_dump(headers_sent()); ?>
返回FALSE。打印後不應該立即發送標題?就像在第一個<
字符之後。
我的代碼很簡單:headers_sent()返回false,但頭部被送到
<!DOCTYPE html>
<html>
<head>
...
<?php var_dump(headers_sent()); ?>
返回FALSE。打印後不應該立即發送標題?就像在第一個<
字符之後。
這取決於你的output_buffering
指令在php.ini
文件中。如果是Off
output_buffering = Off
然後echo headers_sent()
應該輸出1
在其他情況下,headers_sent()
不會輸出任何結果,因爲這將是FALSE。標題將不會被髮送,因爲輸出被緩衝。
如果你想解決這個和強制發送標題,你可以使用flush()
。
希望這會有所幫助!
閱讀文檔中的評論!
這裏,例如:http://es1.php.net/manual/en/function.headers-sent.php#75835
他做一個偉大的論述:P
編輯
是, headers_sent()能夠返回false,即使你送的東西如果output_buffering與您的php.ini中的Off不同,並且您發送的內容的長度不超過output_buffering的大小,則使用print()或header()。 這在php.ini中留意: 「即使在發送正文內容之後,輸出緩衝功能也允許您發送標題行(包括cookie),以PHP的輸出層速度稍微降低爲代價。」
我設法找到一種方法,不停止output_buffering:
if (!headers_sent() && !ob_get_contents()) {
// do your thing
}
沒有,如果你的輸出緩衝。 – DevZer0