ob_gzhandler模​​式导致空白页

时间:2015-11-17 10:24:20

标签: php

我有以下代码,它的工作正常与PHP 5.3

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 个答案:

答案 0 :(得分:1)

数字" 3"你传递给ob_gkhandler函数是模式。模式必须是这些常量的组合:

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);

);