【发布时间】:2016-10-23 11:16:58
【问题描述】:
我网站的某些子页面未完全传输。相反,流似乎停止了。我认为有几个 PHP 警告和消息可能无关紧要(例如未定义的变量和索引)。然后error_log文件出现如下错误:
[deflate:error] [pid 30608] [client 178.203.20.157:65337] AH01386: Zlib error -2 deflating data ((null)), referer: https://knipsakademie.de/mannheim
我发现 -2 表示 Z_STREAM_ERROR。但不幸的是,我真的不明白我在处理什么。服务器正在运行 Plesk 12.5.30 和 PHP 5.6.22 作为 FPM。
phpinfo() 告诉我 zlib 已启用并且我有如下流过滤器:zlib.inflate、zlib.deflate 和一个名为 compress.zlib://
的流包装器设置// this is not from php.ini but from the output of phpinfo()
zlib.output_compression = off
zlib.output_compression_level = -1
zlib.output_handler = [no value]
奇怪的是这个子页面运行良好:
https://knipsakademie.de/frankfurt/gutschein
但是这个有错误并且没有完全传输:
https://knipsakademie.de/mannheim/gutschein
这两个页面上的内容确实不同,但网站本身的结构却没有。内容是从数据库中提取的。现在我知道我在这个网站上通常有某种字符集问题,因为我的 JSON_encodes() 只能使用一种解决方法,而我有点忽略了这个问题,因为我不完全了解如何解决它。所以我想我的问题是:这个 deflate 问题是否与字符集有关?
如何获得有关此问题的更多信息?还有其他我应该查看的服务器日志文件吗?
感谢您的帮助!!!
【问题讨论】:
-
我所能提供的只是
Z_STREAM_ERROR表示流未初始化,初始化后已损坏,或者尝试使用关闭的流。这些都表明使用 zlib 的应用程序中存在某种逻辑或内存覆盖错误。 -
谢谢马克。似乎确实有些东西被破坏了。我已经使用所有相同的设置(当然还有相同的 php 文件)在同一台服务器上的一个单独的 webspace 上进行了重新安装,并且一切似乎都像魅力一样工作。将在几个小时内打开它。
-
还有一个检查(在
inflateStateCheck内)指向z_stream结构的指针自初始化以来没有改变。我可能是错的,但这样它不是独立的,所以你不能轻易地将它推入 C++ 向量。否则,将返回Z_STREAM_ERROR。我想像inflateCopy/deflateCopy这样的东西可以用来克服这个问题。