近日升级php 4.3.10 到 4.4.6,遭遇到一个奇怪的问题。描述如下:
Linux Redhat AS4, Apache 1.3.37, PHP 4.4.6, Smarty 2.6.3 环境中,只要在调用 Smarty 的 display() 函数之前有任何诸如
echo/print/print_r 等输出,那么整个输出结果就变成空白页面。一开始以为是版本升级导致的问题,遂换成旧版本,问题依旧。也怀疑到是否因为 SQUID 缓存引起的,于是直接走 Apache 端口,还是那样。把 PHP 的 error_reporting 改成 E_ALL,重启,没看到任何报错,但是问题依旧如此...这时已经有点烦躁了。 以前也从来没碰到过如此BT之问题,百思不得其解,干脆重启机器吧,可还是那样...
把保存cache的目录权限设置成777,把cache清除,禁用cache...能想得到的都做了,可是,结果还是那样...
没办法,那只好debug调试程序了吧,于是就跟踪 Smarty 的源代码中的 display() 函数,发现调用了 ob 系列函数,于是怀疑和它们有关>系,于是关闭 ob 功能,问题消失。
究其原因,原来是在 Smarty 中调用了 ob_start() 函数,并且附带了参数 'ob_gzhandler',代码段如下:
@ob_start('ob_gzhandler');
$this->fetch($resource_name, $cache_id, $compile_id, true);
$content = @ob_get_contents();
if($content)
{@ob_end_clean();@ob_start('ob_gzhandler');echo $content;@ob_end_flush();
}
在这里,指定输出缓存(output_handler)要调用了 ob_gzhandler 函数。然而,在 php.ini 中的 output_handler
选项却没有打开,也就是无法支持 output_handler 了。打开 php.ini 文件,修改如下内容:
output_handler = ob_gzhandler;
指定 output_handler 的默认处理函数为 ob_gzhandler。重启 Apache,一切 OK。
本文出自 “MySQL中文网”博客 http://www.imysql.cn/

Smarty中的ob_start问题相关推荐

  1. smarty中的内建函数(二)if、section

    接smarty中的内建函数(一) 7.if,elseif,else 主要根据条件来决定处理的方式 [php] view plaincopy print? $role = '1'; $smarty-&g ...

  2. Smarty中的变量

    Smarty中变量分为三类 1.PHP分配的变量 index.php [php] view plaincopy print? require('./include.php');   //加载Smart ...

  3. Smarty 中的 if 语句条件修饰词

    Smarty 中的 if 语句和 php 中的 if 语句一样灵活易用,并增加了几个特性以适宜模板引擎. if 必须于 /if 成对出现. 可以使用 else 和 elseif 子句. 可以使用以下条 ...

  4. smarty中如何统计数组的个数?

    在做web前端中,很多人会遇到在smarty中如何统计数组的个数,其实很简单 比如数组$array 你只需要用{$array|@count}就可以获取. 转载于:https://www.cnblogs ...

  5. smarty中section的使用

    在smarty的使用过程中,有很多时候需要将一个数组输出到模板中来处理,以下将演示如何将一个索引(index)数组和关联(assocaite)数组在页面中展现出来. 假设有如下一个索引数组: 1.索引 ...

  6. Smarty 显示大括号 | 在Smarty中计算数组元素的长度 | Smarty字符串拼接

    参考链接:http://hi.baidu.com/bdusnb/item/289d160e6a9c92cd9157183d 参考链接:http://hi.baidu.com/mayimu789/ite ...

  7. smarty中js的调用方法

    有时候,在smarty中,包含js的时候,整个页面就不会显示,而程序员往往在页面中找错误,程序页面,模板页面检查了多次都没有错误,就很郁闷了. 解决办法: 把模板页面中的js代码拷贝出来放在新建的js ...

  8. php smarty php函数,smarty中使用php函数的方法

    本节内容: 如何在smarty中使用php函数? 例子: 复制代码 代码示例: /** * smarty模板引擎中使用php函数 * by www.jbxue.com */ require 'libs ...

  9. smarty手册-smarty中foreach循环语句详解

    原文地址:smarty手册-smarty中foreach循环语句详解作者:谭博 {foreach}循环也有自身属性的变量,可以通过{$smarty.foreach.name.property}访问,其 ...

最新文章

  1. Windows 编程[5] - 学习窗体生成的过程五
  2. linux mcelog 运行,服务器硬件检测(采用mcelog)
  3. fast.ai 深度学习笔记:第一部分第二课
  4. vc 6.0添加c文件 fatal error C1010解决办法
  5. PHP Socket编程起步
  6. python读写word、excel、csv、json文件
  7. 如何使用预览在 Mac 上将 HEIC 文件更改为 JPEG
  8. css中的@media用法总结
  9. 汇率兑换Python
  10. 飞机机器人特摄片_机器人大战怪兽-好莱坞的特摄片「环太平洋」
  11. SD卡CF卡U盘硬盘等磁盘属性显示为0字节怎么恢复数据
  12. DayDayUp:2019.01.24新东方年会—俞敏洪点赞并奖励吐槽神曲《释放自我》12万元!—附全歌词(牛逼的人在哪里都不会彷徨)
  13. C语言字符数组的定义与初始化
  14. 百度地图js轨迹展示
  15. 手机app抓包,无视SSLPinning
  16. Bootstrap 中的 aria-label 和 aria-labelledby
  17. safari保存视频_如何使用Safari的“阅读列表”保存文章供以后使用
  18. c语言怎么判断常量合不合法_C语言z简单的入门
  19. 奇虎360完成股改增资 新股权结构曝光
  20. 浅谈财务人员的终身学习

热门文章

  1. 一个自定义类型的运算符重载的例子
  2. [Nginx]用Nginx实现与应用结合的訪问控制 - 防盗链
  3. Redis数据库的管理
  4. PHP程序员的技术成长规划(转载)
  5. 【Xamarin挖墙脚系列:使用Xamarin进行Hybrid应用开发】
  6. LeetCode--Factorial Trailing Zeroes(注意)
  7. Vue 新手学习笔记:vue-element-admin 之安装,配置及入门开发
  8. Java内存管理-掌握虚拟机类加载机制(四)
  9. 使用js如何获取treeview控件的当前选中的节点
  10. Mac系统下安装PIL