从回顾来看,其实坑比较少,但是问题都比较出乎意料。
其实我算是一个小版本升级,从8.4升级到8.5,不像之前从7.X升级到8.4的时候遇到一堆问题。
问题1:编译失败
这个问题不好说什么原因,服务器内存、CPU什么的都没问题,不过第一次编译在十分钟左右的时候失败了,第二次编译执行了二十分钟成功了。
问题2:网站访问502
具体表现就是502 Bad Gateway,看了NGINX的日志,是上游的PHP服务一直重置连接,所以又看了PHP的日志,发现PHP进程一直在重启。
当时整个异常的现场就是这个样子。
我PHP不太会,所以就导致一开始的判断出现了问题……
刚开始我以为是NGINX转发导致的,因为NGINX我也升级版本了,后来发现不是,NGINX好好的。
问了问豆包,说可能是因为PHP8.5版本太新,有一部分功能没有适配导致的,所以我又重新编译安装了8.4版本的,结果8.4版本的PHP也是一样的问题。(8.4和8.5两个版本的扩展一模一样。)
纳了闷了。
后来发现8.4的原因是opcache.jit这个参数导致的,关掉就可以了,调整后的参数如下:
opcache.jit_buffer_size=0
opcache.jit=0
8.4的问题解决了,但是我的目的是升级到8.5,所以还是得看看8.5的问题。
于是我又编译安装了PHP8.5,然后也调整了jit的参数,发现问题依旧。
纳了闷了。
排查过程中发现PHP8.5的报了两个错误,php -v报的错:
Failed loading .../opcache‑20250925.so: cannot open shared object file: No such file or directory
PHP Warning: Module "zip" is already loaded
虽然报了错,但是版本什么的都能正常输出。
那就应该是opcache或者zip这两个扩展中的一个或者两个的问题导致的了。
先看opcache,这个最容易出问题,简单的办法就是卸载这个扩展,卸载完之后发现所有的问题都正常了!
网站能正常访问了,PHP也不报错了。
再安装这个扩展之后问题就又出现了……
后来网上搜了一下,发现OPcache这个扩展,其实是PHP官方自带的,不需要按照就行,但是为什么8.4安装了这个扩展就没问题?
奇了怪了。
除非注明,否则均为李锋镝的博客原创文章,转载必须以链接形式标明本文链接

文章评论