回覆 K.Tomono 和 alexrussell101 at gmail dot com
是的,
即使您使用 print() 或 header() 向輸出發送了一些內容,如果 php.ini 中的 output_buffering 設定不是 Off,且您發送的內容長度未超過 output_buffering 的大小,則 headers_sent() 將返回 false。
要測試它,請使用 php.ini 中的這些值嘗試以下程式碼:
1) output_buffering=32
2) output_buffering = 4096
[程式碼]
<?php
echo "Yo<br />";
echo "已送出標頭:",headers_sent(),"<br />";
echo "足夠的文字填滿緩衝區直到溢出 ;-)<br />";
echo "已送出標頭:",headers_sent(),"<br />";
?>
[/程式碼]
然後設定
3) output_buffering = Off
並嘗試以下程式碼
[程式碼]
<?php
echo "Yo<br />";
echo "已送出標頭:",headers_sent(),"<br />";
?>
[/程式碼]
這次將無條件顯示標頭已送出。
這在 php.ini 的註釋中有說明:
「輸出緩衝允許您即使在發送主體內容後也能發送標頭行(包括 Cookie),但代價是會稍微降低 PHP 的輸出層速度。」
注意:這與 implicit_flush 的設定完全無關。