日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php 内容编码错误,PHP输出缓冲,ob_gzhandler引起的内容编码错误?

發(fā)布時間:2024/9/27 php 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 内容编码错误,PHP输出缓冲,ob_gzhandler引起的内容编码错误? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

應用程序的輸出應該只包含一個輸出編碼.如果您有多個編碼方式不同的塊,那么瀏覽器將得到一個無法使用的結果.因此編碼錯誤.

Kohana本身已經(jīng)使用了輸出緩沖區(qū).如果你想將它與你的ob_gzhandler輸出緩沖區(qū)結合起來,你需要在kohana初始化它之前啟動你的緩沖區(qū).那是因為輸出緩沖區(qū)是可堆疊的.當kohana完成輸出緩沖后,您的申請將適用:

ob_start('ob_gzhandler'); # your buffer:

ob_starts and ends by kohana

因此,每當kohana完成一些輸出時,這些塊將被傳遞到輸出回調(diào)(ob_gzhandler())并將進行gz編碼.

然后,瀏覽器應該只獲取gz編碼的數(shù)據(jù),因為它是最頂層的輸出緩沖區(qū).

使用ob_gzhandler并手動回顯緩沖區(qū)

如果你使用ob_start(‘ob_gzhandler’)讓PHP處理壓縮,然后你回顯ob_get_clean(),你將創(chuàng)建一個不可靠的輸出.這與壓縮與輸出緩沖的工作方式有關:

PHP將緩沖輸出塊.這意味著,PHP開始壓縮輸出但保留一些字節(jié)以繼續(xù)壓縮.所以ob_get_clean()返回緩沖區(qū)的遠程壓縮部分.通常這個結果并不完整.

要處理它,首先刷新緩沖區(qū):

ob_start('ob_gzhandler') OR ob_start();

echo 'eh?';

ob_flush();

$gz = ob_get_clean();

echo $gz;

并確保在此之后您沒有任何更多輸出.

如果您將PHP到達腳本的末尾,它將會處理:刷新和輸出.

現(xiàn)在你需要手動調(diào)用ob_flush()來顯式地讓PHP通過回調(diào)推送緩沖區(qū).

用Curl檢查HTTP壓縮問題

由于firefox將返回錯誤,因此需要另一個檢查導致編碼錯誤的工具.您可以使用curl跟蹤發(fā)生的情況:

curl --compress -i URL

在顯示所有響應標頭和未編碼的主體時,將請求啟用壓縮的URL.這是必要的,因為PHP透明地啟用/禁用基于請求標頭的ob_gzhandler回調(diào)壓縮.

響應還表明PHP也將設置所需的響應頭.因此無需手動指定它們.這甚至是危險的,因為只有通過調(diào)用ob_start(‘ob_gzhandler’),你才能說壓縮是否被啟用.

如果壓縮被破壞,curl將給出錯誤描述,但不會顯示正文.

以下是由錯誤的PHP腳本引發(fā)的不完全生成的輸出引起的卷曲錯誤消息:

HTTP/1.1 200 OK

X-Powered-By: PHP/5.3.6

Content-Encoding: gzip

...

curl: (23) Error while processing content unencoding: invalid code lengths set

通過添加–raw開關,您甚至可以進入原始響應體:

curl --compress --raw -i URL

這可以給人一種出錯的印象,比如體內(nèi)未壓縮的部位.

總結

以上是生活随笔為你收集整理的php 内容编码错误,PHP输出缓冲,ob_gzhandler引起的内容编码错误?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。