首頁 php教程 php手册 firefox提示:内容编码错误 无法显示您尝试查看的页面

firefox提示:内容编码错误 无法显示您尝试查看的页面

Jun 13, 2016 am 09:57 AM
firefox 內容 客戶 嘗試 提示 整理 顯示 編碼 網站 錯誤 頁面

今天打帮客户整理一个网站时发现在firefox提示:内容编码错误 无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式了,我一看客户是php站,导致原因可能是ob_gzhandler原因,下面我来总结了解决办法。

firefox错误码:

内容编码错误

无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式。

请联系网站的所有者以告知此问题

 
错误原因和解决办法:

1、保证php程序没有任何警告或出错的提示

2、PHP代码ob_start('ob_gzhandler')导致的,导致的原因有两种:
      a、服务器不支持这种压缩格式,可使用function_exists('ob_gzhandler')判断,解决方法 ob_start('ob_gzhandler')改为ob_start();
      b、使用ob_start('ob_gzhandler')时候前面已经有内容输出,检查前面内容以及require include调用文件的内容。若无法找到可以在调用其它文件前使用ob_start(),调用之后使用 ob_end_clean () 来清除输出的内容;

3、set_magic_quotes_runtime()函数:
提示:Function set_magic_quotes_runtime() is deprecated,导致这个提示的原因是在PHP5.3后此特性已经关闭,在PHP6中已经完全移除此特性,也就是这个函数已经不存在了。你可以注释 或者删除掉出错的行,或者是在set_magic_quotes_runtime()前面加@符号。

4、PHP5.30版本,默认不再支 持这样的语法,输出变量需使用php echo $username;?>语法才可以。你可以通过将 php.ini 中的 short_open_tag 设置为 On,以兼容原来的语法。

php关于ob_start('ob_gzhandler')启用GZIP压缩的bug

如果使用ob_start("ob_gzhandler");
则ob_clean()后面的输出将不显示,这是个bug,
可以用ob_end_clean();ob_start("ob_gzhandler"); 代替ob_clean();
否则后面输出内容将是空。
error_reporting(E_ALL);
ob_start("ob_gzhandler");
echo "content";
ob_clean();
echo "more content";
?>
上面的代码期望输出more content实际上什么内容也不会输出。

下面就正常了
error_reporting(E_ALL);
ob_start("ob_gzhandler");
echo "content";
ob_end_clean();
ob_start("ob_gzhandler");
echo "more content";
?>

下面自定义一个回调函数再测试
function my_ob_gzhandler($buffer,$mod){
   header("Content-Encoding: gzip");
   return gzencode($buffer, 9, FORCE_GZIP);
}

error_reporting(E_ALL);
ob_start("my_ob_gzhandler");
echo "content";
ob_clean();
echo "more content";
?>
上面是正常的,但使用ob_end_clean代替ob_clean后又会导致后面的输出不会显示。

因此即使是下面的代码依然会在使用ob_clean或者ob_end_clean后会导致输出为空。
if (ini_get('zlib.output_compression')) {
   if (ini_get('zlib.output_compression_level') != 9) {
      ini_set('zlib.output_compression_level', '9');
   }
   ob_start();
} else {
   if (strstr($_SERVER['HTTP_ACCEPT_ENCODING'], "gzip")) {
      ob_start("ob_gzhandler");
   } else {
      ob_start();
   }
}
?>

最稳定的启用页面压缩的方法应该类似下面
if(extension_loaded('zlib')) {
ini_set('zlib.output_compression', 'On');
ini_set('zlib.output_compression_level', '3');
}
?>

但如果一定要使用ob_gzhandler来启用页面压缩就要注意本文的第一句话了。

事实上,下面的代码只是浏览器不显示
error_reporting(E_ALL);
ob_start("ob_gzhandler");
echo "content";
ob_clean();
echo "more content";

但如果测试一下

telnet localhost 80
GET /test.php HTTP/1.0

将会返回如下信息

HTTP/1.1 200 OK
Date: Fri, 20 Feb 2009 15:40:17 GMT
Server: Apache/2.2.6 (Win32) PHP/5.2.5
X-Powered-By: PHP/5.2.5
Vary: Accept-Encoding
Content-Length: 12
Connection: close
Content-Type: text/html

more content

失去了跟主机的连接。

可以看出more content已经输出

 

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
谷歌瀏覽器提示此標籤頁的內容正在被分享怎麼辦? 谷歌瀏覽器提示此標籤頁的內容正在被分享怎麼辦? Mar 13, 2024 pm 05:00 PM

  Google瀏覽器提示此標籤頁的內容正在被分享怎麼辦?我們在使用Google瀏覽器開啟新標籤的時候有時會遇到提示此標籤頁的內容正在被分享,那麼這是怎麼回事?以下就讓本站來為使用者來仔細的介紹一下谷歌瀏覽器提示此標籤頁的內容正在被共享的問題解析吧。  Google瀏覽器提示此標籤頁的內容正在被共享解決方法  1、打開谷歌瀏覽器,在瀏覽器右上角可以看到三個點「自訂和控制Googlechrome」用滑鼠點擊圖示進行圖示。  2、點擊後,Google瀏覽器的選單視窗將彈出到下面,滑鼠將移動到「更多工具

無法完成操作(錯誤0x0000771)印表機錯誤 無法完成操作(錯誤0x0000771)印表機錯誤 Mar 16, 2024 pm 03:50 PM

如果您在使用印表機時遇到錯誤訊息,例如操作無法完成(錯誤0x00000771),可能是因為印表機已中斷連線。在這種情況下,您可以透過以下方法解決問題。在本文中,我們將討論如何在Windows11/10PC上修復此問題。整個錯誤訊息說:操作無法完成(錯誤0x0000771)。指定的印表機已被刪除。修正WindowsPC上的0x00000771印表機錯誤若要修復印表機錯誤操作無法完成(錯誤0x0000771),指定的印表機已在Windows11/10PC上刪除,請遵循下列解決方案:重新啟動列印假脫機

Windows Update 更新提示Error 0x8024401c錯誤的解決方法 Windows Update 更新提示Error 0x8024401c錯誤的解決方法 Jun 08, 2024 pm 12:18 PM

目錄解決方法一解決方法二一、刪除Windows更新的臨時檔案二、修復受損的系統檔案三、檢視並修改登錄項目四、關閉網卡IPv6五、執行WindowsUpdateTroubleshootor工具進行修復六、關閉防火牆和其它相關的防毒軟體。七、關閉WidowsUpdate服務。解決方法三解決方法四華為電腦Windows更新出現「0x8024401c」報錯問題現象問題原因解決方案仍未解決?最近web伺服器因為系統漏洞需要更新,登入伺服器之後,更新提示錯誤碼0x8024401c解決方法一

香香腐宅app為什麼顯示錯誤 香香腐宅app為什麼顯示錯誤 Mar 19, 2024 am 08:04 AM

顯示錯誤是在香香腐宅app中可能會出現的問題,有些用戶還不太清楚香香腐宅app為什麼顯示錯誤,可能是網絡連接問題、後台程序過多、註冊信息錯誤等問題,接下來就是小編為使用者帶來的app顯示錯誤解決方法的介紹,有興趣的使用者快來一起看看吧!香香腐宅app為何顯示錯誤答案:網路連線問題、後台程式過多、註冊資訊錯誤等詳情介紹:1、【網路問題】解決方法:檢視裝置連線網路狀態,重新連線或選擇其他網路連線使用即可。 2.【後台程式過多】解決方法:關閉正在運作的其他程序,釋放系統,可以加快軟體的運作。 3、【註冊資訊錯

Linux Oops:詳解這錯誤的意義 Linux Oops:詳解這錯誤的意義 Mar 21, 2024 am 09:06 AM

LinuxOops:詳解這一錯誤的含義,需要具體程式碼範例什麼是LinuxOops?在Linux系統中,&quot;Oops&quot;指的是核心出現了一個嚴重的錯誤導致系統崩潰的情況。 Oops實際上是一種核心崩潰的機制,它會在發生致命錯誤時停止系統運行,並列印相關的錯誤訊息,以便開發者對問題進行診斷和修復。 Oops通常發生在核心空間中,與用戶空間的應用程式無關。當內核遇到

Cheat Engine如何設定中文? Cheat Engine設定中文方法 Cheat Engine如何設定中文? Cheat Engine設定中文方法 Mar 13, 2024 pm 04:49 PM

  CheatEngine是一款遊戲編輯器,能夠對遊戲的記憶體進行編輯修改。但是它的預設語言是非中文的,對於很多小夥伴來說比較不方便,那麼CheatEngine怎麼設定中文呢?今天小編就跟大家詳細介紹一下CheatEngine設定中文的方法,希望可以幫助到你。  設定方法一  1、雙擊開啟軟體,點選左上角的「edit」。  2、接著點選下方選項清單中的「settings」。  3、在開啟的視窗介面中,點選左側欄中的“languages”

處理Laravel頁面無法正確顯示CSS的方法 處理Laravel頁面無法正確顯示CSS的方法 Mar 10, 2024 am 11:33 AM

《處理Laravel頁面無法正確顯示CSS的方法,需要具體程式碼範例》在使用Laravel框架開發Web應用程式時,有時候會遇到頁面無法正確顯示CSS樣式的問題,這可能會導致頁面呈現不正常的樣式,影響使用者體驗。本文將介紹一些處理Laravel頁面無法正確顯示CSS的方法,並提供具體的程式碼範例,幫助開發者解決這個常見問題。一、檢查檔案路徑首先要檢查CSS檔案的路徑是

百度貼吧app提示操作太頻繁怎麼回事 百度貼吧app提示操作太頻繁怎麼回事 Apr 01, 2024 pm 05:06 PM

百度貼吧app提示操作過於頻繁這種提示通常是為了維護平台的正常運作和用戶體驗,以防止惡意刷屏、廣告刷帖等不當行為,具體的處理方法各位可以看小編分享教程哦。百度貼吧app提示操作過於頻繁處理方法分享1、當系統提示【操作太頻繁】的時候,我們需要等待一段時間,如果著急可以先去做一點別的事情,一般等待一會兒之後,這個提示信息就會自動消失,這時候我們就可以正常使用了。 2.如果等了很久之後,它還是顯示【操作過於頻繁】,我們可以嘗試去貼吧應急吧、貼吧意見反饋吧等官方貼吧,發帖反饋這種現象,請求官方人員解決。 3、

See all articles