脚本第二次加载后输出乱码

在一台运行FreeBSD 8.3-RELEASE-p3Apache 2.2.22从端口运行的服务器上, PHP version 5.4.6从端口运行,输出在脚本的第二次加载时出现乱码。 有问题的行为是今天才被发现的,但是我们怀疑它是从最近的一个端口更新开始的。

这是一个示例脚本:

 <?php // index.php print 'top of index.php<br>'; require 'blah.php'; print '<br>after require'; ?> <?php // blah.php print 'blah'; ?> 

在文件被修改后的第一次,这是输出:

 top of index.php<br> blah <br>after require 

第二个(和任何后续的调用)给同一个脚本给这样的随机垃圾输出öàœ~cept-Encodinðš~~垃圾。 有时它是文件名块。

在Apache错误日志中,我们看到段错误和PHP错误,没有定义函数“\ x0”,指向上面index.php中的第1行。 显然, print是一个定义的function!

如果保存该文件(导致ctime改变),则下一次加载将再次显示期望的输出,但是随后的加载再次出现乱码。 重新启动服务器即可完成此操作,除非有时在发生扰乱之前可以获得3-4个负载。

我怀疑gzip或zlib有一些其他压缩或操作码caching等问题。 但是,我们的php.ini与另一台服务器完全相同,它们的设置和版本完全相同。

如果有人能指出我可能的原因,或进一步诊断问题的有效方法,我会很感激。 我已经检查了php.ini设置,设置了一个最小样本,并validationzlib是closures的 – 没有骰子。