Smarty中的ob_start问题-阿里云开发者社区

开发者社区> 科技小先锋> 正文

Smarty中的ob_start问题

简介:
+关注继续查看
近日升级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。


本文转自叶金荣51CTO博客,原文链接:http://blog.51cto.com/imysql/308086,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【DATAGUARD 学习】学习DATAGUARD 过程中遇到的问题
错误1:ORA-16057: DGID from server not in Data Guard configuration原因:主库没有设置参数log_archive_config解决方法*.
499 0
SSH异常“Failed to start OpenSSH Server daemon”问题排查
SSH异常“Failed to start, OpenSSH Server daemon”的问题排查
39120 0
【Quartz】问题记录注意事项【四】
原文:【Quartz】问题记录注意事项【四】 记录一:queartz 在同时启动多个任务是,触发器名称不能设置一致,不然第二次启动会不成功   记录二:quartz 在使用任务与触发器分离写法时,任务必须要带(.
1012 0
【DataGuard】10GR2 DataGuard的几个redo log相关问题
1.备库启动报redo log不存在的问题: 错误信息: Errors in file /home/oracle/admin/kgbdwmyj/bdump/kgbdwmyj_mrp0_11986.
695 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10443 0
Arthas协助排查线上skywalking不可用问题
前言 首先描述下问题的背景,博主有个习惯,每天上下班的时候看下skywalking的trace页面的error情况。但是某天突然发现生产环境skywalking页面没有任何数据了,页面也没有显示任何的异常,有点慌,我们线上虽然没有全面铺开对接skywalking,但是也有十多个应用。
3948 0
由于JRE版本导致的Error filterStart问题
近两个星期一直被Tomcat的Error filterStart所困扰,明明运行很好的程序,换了电脑就不能运行了,今天终于发现了问题所在。下面是安装了Tomcat6.0以后得到的错误信息:2008-1-15 11:10:57 org.
692 0
使用DotNetNuke(DNN) Startkit 4.7(及以上版本)安装无法完成问题的解决方法
最近决定使用DNN Startkit 做些开发,却发现下载DNN 4.8.2 Startkit安装后,生成的网站总是无法完成安装,一到数据库安装那里就停下来,只有进度条滚动,不执行安装的Script。 如图: 几经周折,最终发现自己犯了了一个很愚蠢的错误-没有仔细阅读说明。
671 0
6967
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载