好久没了,记录个php坑。
倒腾zabbix的php时,装了一个screw-plus的php加密插件,却突然发现web页面打不开了,具体表现是web页面无响应一直在转,等很久之后报无法连接,此时开浏览器的调试模式,只能看到连接处于stalled状态,然而80端口却能正常连接,登录后台看apache的error.log及系统的syslog都无明显报错,偶尔会在重启时出现
”child pid 6705 exit signal Segmentation fault (11)“
百度谷歌乱查了一通,并无解决问题的头绪,看到有说php发生变化的问题,于是把插件卸载,找回原版php,重启了apache,发现还是不行,非常头疼。
然后想起来是php是不是真的不行呢,于是手写了
<?php phpinfo(); ?>
页面正常显示了,这说明php代码执行应该是没问题的,应该是执行zabbix的php中间出了问题,于是开启了人肉php调试模式,采用
print_r($var); exit;
一步一步断点调试。
最终发现卡在initdb那里,手动mysql连接也连接不上,发现原来是数据库出了问题,然后想起数据库是放在nfs共享目录中,果然nfs挂了,nfs起来,重启数据库,文件已经损坏无法修复,但此时页面已经能显示报错了
”Database error
- Error connecting to database: No such file or directory
Retry
“
到此,原因是找到了,mysql的数据文件目录断开,可能socket还在,php连接数据库超时,但zabbix没有记录报错,导致页面一直加载,到http连接最后断开。
时间: 2024-10-07 03:19:41