我有以下代码,它的工作正常与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,因为代码在很多文件中,所以如果我必须将模式更改为其他东西我有很多文件需要更改。
由于
答案 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);
);