使用xdiff_string_diff()时页面无法加载,遇ERR_CONNECTION_RESET问题求助
我之前在WAMP环境折腾PHP扩展时碰到过几乎一模一样的情况,结合你的描述,给你几个实际可行的排查和解决方向:
检查xdiff扩展与PHP7.0的兼容性
很多旧版xdiff扩展在PHP7.x系列上存在未修复的内存溢出或进程崩溃bug,尤其是调用xdiff_string_diff()时会直接导致Apache子进程崩溃,从而触发浏览器的ERR_CONNECTION_RESET错误。建议你重新下载或编译适配PHP7.0的稳定版xdiff扩展——注意要找专门针对PHP7.0编译的版本,不要用PHP5.x的扩展包。查看Apache的错误日志
你提到PHP错误日志没有报错,但Apache自身的错误日志(在WAMP的Apache/logs/error.log路径下)大概率会记录进程崩溃的细节,比如Windows系统下常见的Child xxx exited with status 3221225477这类崩溃码,这能直接坐实是xdiff扩展导致的进程异常退出。验证最小复现场景的稳定性
你已经用简单字符串测试过了,如果连$string1 = "some"和$string2 = "some different"都会崩溃,那基本可以排除字符串内容的问题,肯定是扩展本身的兼容性故障。可以再试试更极端的输入(比如空字符串、单字符字符串),确认是否所有调用都会触发崩溃。临时替换为纯PHP的差异实现
如果一时找不到适配的xdiff扩展版本,可以先用纯PHP编写的字符串差异函数替代。比如基于Myers差异算法的轻量实现,虽然性能不如C扩展,但完全能满足普通场景的字符串对比需求,而且不会导致进程崩溃。调整Apache的内存相关配置
虽然你测试的字符串很短,但偶尔Apache进程的内存限制也会触发扩展崩溃。可以尝试在httpd.conf里调整LimitMEMLOCK参数,或者把PHP的memory_limit调高一些(比如从默认的128M改成256M),排除内存不足的可能性。
内容的提问来源于stack exchange,提问作者MTK

