php环境中加入伪静态,php环境中url伪静态和Gzip同时开启相关问题与解决办法

我们来看启用gzip的三种情况:

1.单纯开启url伪静态,不开启gzip,网站正常;

2.单纯开启gzip,不开启url伪静态,网站正常;

3.同时开启url伪静态和gzip,网站无法正常显示,有时显示不出内容,刷新后自动refresh等问题。

解决办法:

1、修改服务器设置法:

在php.ini中找到:zlib.output_compression,把zlib.output_compression = On 改成 zlib.output_compression = Off

保存,铂重启apache或IIS。

2、修改网站程序法:

使用虚拟主机时,无法修改 php.ini 的,可以在网站的公共文件或初始化文件中加入这句:

复制代码 代码如下:

! ini_get('zlib.output_compression') ? ob_start('ob_gzhandler') : ob_start();

现象解说:

开启 zlib.output_compression 相当于给每个PHP程序开头加上了ob_start("ob_gzhandler");这条语句。虽然 zlib.output_compression和ob_gzhandler还是有区别的。zlib.output_compression是和PHP脚 本解析程序并行的一个线程,当PHP输入时,这边读入,压缩,而已经压缩好的文档达到一定数量(默认是4k),它就向浏览器发送数据。而 ob_gzhandler则是在PHP脚本执行完所有代码才把缓存好的输出文件进行压缩并传输给浏览器,所以相对慢一点,但原理是相同的。

而在后台开启 gzip 功能后,会不加判断地强制运行头部的 ob_start("ob_gzhandler") 语句,这样相当于程序同时运行了两条 ob_start("ob_gzhandler") 语句,造成无法正常执行并显示出页面内容。

因此,建议正常情况下php.ini里zlib.output_compression设置为 Off 状态,毕竟编程人员大多数还是会出现不加判断地添加 ob_start("ob_gzhandler") 语句的情况。

作者: Sjolzy

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值