PHP Conference Japan 2024

執行期設定

這些函式的行為會受到 php.ini 中設定的影響。

輸出控制設定選項
名稱 預設值 可變更性 更新日誌
output_buffering "0" INI_PERDIR  
output_handler null INI_PERDIR  
implicit_flush "0" INI_ALL  
url_rewriter.tags "form=" INI_ALL 從 PHP 7.1.0 開始,此 INI 設定僅影響 output_add_rewrite_var()。在 PHP 7.1.0 之前,此 INI 設定啟用了透明工作階段 ID 支援(請參閱 session.trans_sid_tags)。
url_rewriter.hosts 預設使用 $_SERVER['HTTP_HOST'] INI_ALL PHP 7.1.0 起可用
有關 INI_* 模式更詳細的資訊和定義,請參閱 設定設定的位置

以下簡述各項設定指令。

output_buffering 布林值/整數

將此指令設定為 "On" 可以啟用所有檔案的輸出緩衝。若要限制緩衝區大小,可以使用數字/數量來代替 "On" 作為此指令的值,該數字/數量對應允許的最大位元組數。例如 output_buffering=4096。在 PHP-CLI 中,此指令永遠為 Off。

output_handler 字串

可以將腳本的輸出重新導向到一個函式。例如,將 output_handler 設定為 mb_output_handler(),字元編碼將會透明地轉換為指定的編碼。設定任何輸出處理程式都會自動開啟輸出緩衝。

注意:

mb_output_handler()ob_iconv_handler() 不能同時使用,且 ob_gzhandler()zlib.output_compression 不能與以下任何一項同時使用:mb_output_handler()ob_gzhandler()zlib.output_compression、'URL-Rewriter' 處理程式(參見 session.use_trans_sidoutput_add_rewrite_var())。

注意:

此指令只能使用內建函式。對於使用者自訂函式,請使用 ob_start()

implicit_flush 布林值

預設為 false。將其更改為 true 會指示 PHP 讓輸出層在每個輸出區塊後自動清空自身。這相當於在每次呼叫任何產生輸出的函式(例如 printecho)以及每個 HTML 區塊之後呼叫 PHP 函式 flush()

在 Web 環境中使用 PHP 時,開啟此選項會嚴重影響效能,通常建議僅用於除錯目的。在 CLI SAPI 下運作時,此值預設為 true

另請參閱 ob_implicit_flush()

url_rewriter.tags 字串
url_rewriter.tags 指定了 output_add_rewrite_var() 值會重寫 URL 的 HTML 標籤和屬性。預設值為 "form=" 加入 "form=" 或任何 form 屬性會在 form 中添加一個隱藏的 input 元素,其中包含傳遞給 output_add_rewrite_var() 的每個名稱-值對的名稱和值屬性。
注意事項

url_rewriter.tags 中多次添加相同的標籤只會在 URL 重寫過程中使用第一次出現的標籤。

備註: 在 PHP 7.1.0 之前,url_rewriter.tags 用於指定 session.trans_sid_tags

url_rewriter.hosts 字串
url_rewriter.hosts 指定要重寫以包含 output_add_rewrite_var() 值的主機。預設值為 $_SERVER['HTTP_HOST']。可以透過以逗號分隔且不包含空格的清單來指定多個主機。例如 "php.net,wiki.php.net,bugs.php.net"

新增註解

使用者貢獻的註解 1 則註解

6
support at losalgendesign dot com
11 年前
在 output_buffering 上使用「OFF」或不設定值將會停用標頭修改,例如重新導向或內容類型或內容配置,導致我們通常歸因於標頭修改之前的輸出的錯誤

警告:無法修改標頭資訊 - 標頭已由 (輸出開始於 C:\PATH\filename.php:1) C:\PATH\filename.php 在第 1 行發送

output_buffering = OFF 的範例程式碼會導致此行為。將其更改為「ON」或給它一個值可能會導致正常行為。

<?php header("Location: https://php.dev.org.tw"); ?>



<?php header("Content-Type: text/Calendar"); ?>
<?php header
("Content-Disposition: inline; filename=appointment.ics"); ?>
To Top