2011-03-26 31 views
4

如果存在ob_start('ob_gzhandler'),我有一個在瀏覽器中拋出內容編碼錯誤的網站。如果我刪除聲明,它運行良好。爲什麼ob_start('ob_gzhandler')打破這個網站?

  • 該網站運行與許多其他網站相同的框架,服務器和託管軟件包。無論聲明是否在那裏,它們都可以工作。
  • 該聲明位於框架中,而不是應用程序代碼,因此它由所有站點共享。
  • 工作場所與非工作場所的配置沒有區別。
  • 該網站本地運行正常,使用完全相同的代碼和數據。
  • 您可以使用curl/wget獲取網站,並且HTML在瀏覽器中返回呈現正常。
  • 響應標題完全相同,沒有聲明。

我已經刪除了遠程服務器上的所有代碼,並重新上傳了所有內容。仍然沒有變化。 下一步將重新安裝該網站,並從頭開始,但我不想丟失所有數據。

任何指針,建議或解決方案?

+0

貴IDE在文檔的開頭添加任何'UTF8/UTF16'字符? – 2011-03-26 10:48:30

+0

您是否已激活[this](http://fr2.php.net/manual/en/zlib.configuration.php#ini.zlib.output-compression)?如上所述[這裏](http://php.net/manual/en/function.ob-gzhandler.php)>你不能同時使用ob_gzhandler()和zlib.output_compression。另請注意,使用zlib.output_compression優於ob_gzhandler()。 – Shikiryu 2011-03-26 11:15:07

+0

@Russel Dias的無 @Shikiryu圍繞ob_start( 'ob_gzhandler')的代碼檢查這一點。 – Jrgns 2011-03-26 11:36:12

回答

3

通常我做的下方,它爲我工作,給它一個嘗試

ob_end_clean();ob_flush();在頁面的底部,你開始ob_start();

參考文獻:

ob_end_clean();

ob_flush();

+3

有趣。我加入 而(ob_get_level()> 0){ob_end_clean()} 即固定它。我仍然想知道爲什麼它沒有出現在其他網站上,想到。反正Thanx! – Jrgns 2011-03-26 11:27:04

1

如果你是使用Apache的gzip壓縮方式(根據你的樣子,由於CSS/JS被壓縮,據我所知),然後使用ob_start('ob_gzhandler')將壓縮該壓縮...並且瀏覽器不會能夠處理它。

因爲我一直使用Apache來爲我做這件事,所以我正在糾正當中,但它看起來像是雙重壓縮的東西,這就是爲什麼它沒有使用「ob_gzhandler」語句的原因。

在其他網站上檢查您的.htaccess文件,並將其與您運行的網站相比有同樣問題,因爲我無法看到您在zacoders.net和jadeit.co.za上運行Drupal ,就在jadeit.co.za上,這讓我覺得他們和你說的不一樣嗎? 聳肩

+0

只是爲了添加到我的答案在這裏,之所以捲曲正常返回該網站是因爲(再次,據我所知)它不支持gzip因此服務器/軟件會給網站「原樣」。但是,與那些支持gzip,並告訴他們支持它的服務器瀏覽器,會回來的gzip壓縮,壓縮內容,並不能很好地縮小了。 – AcidRaZor 2011-03-26 11:16:37

+0

你說得對,它會壓縮壓縮的數據,但我通過做 if(ob_get_level()=== 0)阻止了它的發生。 } – Jrgns 2011-03-26 11:28:29

+0

zacoders運行在[後端的PHP(http://backend-php.net)一樣,該actualy後端部位和jrgns.net。我也在我工作的公司使用它。我沒有機會將jadeit.co.za移植到它:) :) – Jrgns 2011-03-26 11:30:15

1

只是把此行的代碼開始,一切都會好起來..

while (ob_get_level() > 0) { ob_end_clean() ; } 
相關問題