我发现以下PHP代码在Windows Apache服务器上运行时崩溃:
有趣的是,如果字符串更短,代码就可以工作 - 如果我注释掉字符串的最后一部分(行),代码就会运行并按预期工作.
但是,由于代码在此处显示,代码会导致Apache崩溃并重新生成 - 不记录任何错误.如果我尝试直接通过PHP运行代码,它按预期工作,所以问题与Apache有某种关系.
我已经尝试了"pcre.recursion_limit"设置,并发现如果我将其降低到689它不会死,而是preg_match()调用失败并带有PREG_RECURSION_LIMIT_ERROR.对于更高的pcre.recursion_limit值,Apache死了.
Apache 2.2.11 PHP 5.3.0
我也在Debian服务器上测试了这个,我没有看到错误,并且在Windows上使用不同版本的PHP和Apache,如上所述发生错误,因此它似乎与Windows相关.
以前有人看过这个吗?我真的想要某种暗示!
更新:我是因为Apache for Windows中的一个"错误" - 好吧,不是真正的错误,但似乎Apache使用小堆栈编译,并且当PHP使用它时导致PCRE中出现此错误.见http://bugs.php.net/bug.php?id=47689