Windows 2008 下 PHP 开启 opcache 后频繁 500 错误解决方式
发布网友
发布时间:2022-10-06 16:50
我来回答
共1个回答
热心网友
时间:2023-10-23 04:46
最近公司后台访问速度下降,操作卡顿,公司后台环境是 windows server 2008 + iis7 + php5.6,于是在参考网上解决方案后,觉得使用 opcache 最为方便,于是参考几篇配置示例文档后,在线部署了。经过一段时间体验后,发现确实快了很多,但是相应的出现了一个以前几乎没见过的问题,访问后台时经常性 500 错误,但是刷新页面就恢复正常了,将这个现象在网上搜了一番,确实存在这个问题,但是找了许多帖子也没有发现靠谱的解决方案,于是就搁置了这个问题,刷新页面重试也是可以忍受的。
后来,经公司运营反馈发现,500 错误发生的太频繁了,另外有时候刷新也不管用,因为后台有些页面会一次性批量请求后端接口,然后几乎都是 500,这个问题就有些严重了,于是重新开始在网上寻求解决方式。
搜索到两个方案如下:
在 Internet 信息服务(IIS)管理器下的应用程序池中选择应用,右键-高级设置-标识,将 ApplicationPoolIdentity 修改为 LocalSystem,经验证,失败。
在 PHP 手册中有这么一个配置项
另外,在评论中有下面这段话,
大致意思是当我们在 windows 平台下开启 opcache 时,你可能发现运行时出现随机 500 错误,然后在 php.ini 中添加一行配置 opcache.mmap_base = 0x20000000 可以解决。不幸的是,我不知道值“0x20000000”的意义,我只能告诉你这个值可以解决这个问题。
经过验证,成功解决 500 错误!
下面贴下我自己的 opcache 配置