2015-11-17 536 views
0

我有下面的代碼,它工作正常使用PHP 5.3ob_gzhandler模​​式的原因空白頁

function minimize($__OUTPUT_BUUFER__) { 
     $__OUTPUT_BUUFER__ = str_replace(array("\r", "\r\n", "\n", "\t", " "), "", $__OUTPUT_BUUFER__); 
     return ob_gzhandler($__OUTPUT_BUUFER__,3); 
    } 

ob_start("minimize"); 

我必須轉移到PHP 5.5和它不工作。我不斷得到空白頁。

如果我改變ob_gzhandler模​​式爲1或4或5或6其工作正常 如果我使用2或3它根本不工作。

誰能幫我找到爲什麼它不使用模式3工作,因爲代碼是一個很大的文件裏面,所以如果我要改變模式到別的東西我有很多文件的改變。

感謝

回答

1

你傳遞給ob_gkhandler功能的數字「3」的模式。模式必須是那些常數的組合物:

PHP_OUTPUT_HANDLER_START 
PHP_OUTPUT_HANDLER_CONT 
PHP_OUTPUT_HANDLER_END 

那些常數的數值已跨越PHP版本改變:

php 5.3: 
PHP_OUTPUT_HANDLER_START = 1 
PHP_OUTPUT_HANDLER_CONT = 2 
PHP_OUTPUT_HANDLER_END = 4 

php 5.4: 
PHP_OUTPUT_HANDLER_START = 1 
PHP_OUTPUT_HANDLER_CONT = 0 
PHP_OUTPUT_HANDLER_END = 8 

og_gzhandler內部代碼必須相應地具有變化。

所以,是的,你必須改變你的代碼的每一個地方在你的腳本,使之與php5.5工作。優先使用這些常量而不是原始數值。

你先前模式爲 「3」 匹配模式,其中: 「PHP_OUTPUT_HANDLER_START | PHP_OUTPUT_HANDLER_CONT」

所以使用:

 return ob_gzhandler($__OUTPUT_BUUFER__,PHP_OUTPUT_HANDLER_START | PHP_OUTPUT_HANDLER_CONT); 

);

+0

偉大的答案非常感謝,我找不到這個不管浩,我沒有在網絡上搜索 – ntan