php执行后报502,无错误提示的排查和解决

article/2025/6/26 22:39:11

文章目录

  • 一、阐述问题
  • 二、开始排查
    • 1.执行代码展示
    • 2.PHP层面排查问题
    • 3.系统层面排查问题
      • 1. 分析系统日志
      • 2. core dump 分析
        • 2.1 core dump 是什么
        • 2.2 core dump 配置 并 生成 core 文件
        • 2.3 gdb 解析 core 文件
    • 4. 问题解决
  • 三、赠送内容
  • 四、总结

一、阐述问题

这个问题花了我起码10个小时,必须得总结一下。

问题是这样的,我在laravel 里面连接了一下sqlserver的数据库,然后页面直接就报502。去项目下的日志看,也没有任何报错。

二、开始排查

1.执行代码展示

$serverName = '192.168.116.180\messyna'; //数据库服务器地址
$connectionInfo = array("UID" => "mssa", "PWD" => "12345677", "Database" => 'test111');
$conn = sqlsrv_connect($serverName, $connectionInfo);
if($conn == FALSE){echo "连接失败!";var_dump(sqlsrv_errors());exit;
}else{echo "链接成功";
}
echo "连接成功!";
exit;

这就是普通的连接sqlserver的代码。只要执行这段代码,直接就报 502!

Sqlserver的配置肯定没问题,前一天还是可以执行的。而且有其他的机器能执行。

2.PHP层面排查问题

经过一段时间的乱碰,觉得还是看一下php-fpm的错误日志。

找到php-fpm的配置,找到错误日志路径。

在这里插入图片描述

终于看到报错信息:
在这里插入图片描述
deepseek的回答结果如下:

WARNING: [pool www] child 4542 exited on signal 11 (SIGSEGV) after 542.345727 seconds from start

  • 含义:www 进程池中的子进程 4542 在运行 542秒(约9分钟) 后,因 信号 11(SIGSEGV) 崩溃退出。

    • SIGSEGV(分段错误):表示进程试图访问非法内存地址,常见原因包括:

      • PHP 扩展(如 Redis、Opcache 等)存在 bug。

      • PHP 代码中存在内存溢出(如无限递归、大数组操作)。

      • 服务器内存不足或配置错误(如 pm.max_children 设置过高)。

      • 硬件问题(如内存条故障,但概率较低)。

我的分析测试:

  1. 硬件问题 可以排除,最近我都没动过什么配置之类的。而且是虚拟主机,不可能。
  2. PHP 代码中存在内存溢出 可以排除。就一个连接,能有什么溢出
  3. 内存不足 ,我将虚拟主机加大了2G内存, 结果还是502,说明不是内存问题。
  4. 扩展问题 ,感觉有点像
    - mysql的连接是正常的,就sqlserver 不正常
    - 重新安装 pdo_sqlsrv 和 sqlsrv 两个扩展,结果依然是502,跟扩展没关系
  5. 重装php8.2 ,结果测试,还是502

经过以上的测试,差不多可以知道,应该不是php的问题。应该是centos系统的问题。不管怎么测试。指向的都是 分段错误

3.系统层面排查问题

1. 分析系统日志

dmesg | grep php 在系统日志中筛选与 “php” 相关的信息

在这里插入图片描述

取一条日志出来看看:

[65062.298372] php-fpm[1288]: segfault at 0 ip 00007fc555571fd6 sp 00007fff26f52bb8 error 4 in libc-2.17.so[7fc555433000+1c4000]

经过查资料分析:

这个错误提示表明 PHP-FPM 进程发生了段错误(segfault),这通常是由内存访问违规引起的严重错误。

segfault at 0:程序尝试访问内存地址 0x0(空指针),这通常是由于未初始化的指针或内存损坏导致的。

libc-2.17.so:错误发生在 C 标准库中,这是系统核心组件,可能由以下原因触发:

  • PHP 扩展与 libc 不兼容。
  • PHP 本身存在内存管理漏洞。
  • 系统库文件损坏。

error 4:表示 SEGV_ACCERR(访问权限错误),即程序尝试访问没有权限的内存区域。

总体上来说,应该是读取内存地址无效。但是没有具体的信息,过于笼统,还需要进一步的调试。

又经过了漫长的查资料,终于查到了一点方向,core dump

2. core dump 分析

2.1 core dump 是什么
  1. core dump 是什么?
    core dump(核心转储) 是操作系统在程序异常终止(如崩溃、段错误、非法指令等)时,将进程当时的内存状态、寄存器内容、程序计数器值等关键信息写入到一个文件中的过程。这个文件被称为 core 文件,它本质上是进程运行时状态的 “快照”。

  2. core dump 的作用

    • 调试程序错误
      开发人员可以通过分析 core 文件,定位程序崩溃的具体位置(如哪行代码引发错误)、变量值、函数调用栈等信息,从而快速排查内存越界、空指针引用、段错误等问题。

    • 系统故障分析
      在服务器环境中,core dump 可用于分析长期运行的服务(如 Web 服务器、数据库)突然崩溃的原因,避免问题反复出现。

    • 性能优化参考
      虽然 core dump 主要用于错误定位,但也能间接反映程序的内存使用模式,为性能优化提供线索。

  3. core dump 的触发场景
    当程序遇到以下情况时,系统通常会生成 core dump:

    • 访问非法内存地址(如空指针解引用、数组越界)
    • 执行非法指令(如除以 0、无效的 CPU 操作码)
    • 收到无法处理的信号(如 SIGSEGV、SIGABRT)
    • 内存不足或被系统强制终止(如 OOM Killer 触发)

正和我意,触发场景正好能解决我的问题。

2.2 core dump 配置 并 生成 core 文件
  1. 设置 core 文件大小为无限制(unlimited):

    //临时调试
    ulimit -c unlimited//调试完最后记得关闭 core dump
    ulimit -c 0
    
  2. 执行 php 代码,报错 502。 此时在项目的根目录下,会生成一个 core 文件。

    在这里插入图片描述

这几个core 文件就记录了 内存读取失败的相关情况,那接下来就是读取这个core 文件了

2.3 gdb 解析 core 文件

GDB(GNU Debugger) 是 Linux/Unix 系统下最常用的 代码调试工具,主要用于分析和修复程序崩溃、死锁、内存泄漏等问题

1. 安装 gdb

yum install gdb

2. 生成 GDB 回溯信息

gdb php core.2134
(gdb) bt full  # 获取完整的堆栈回溯

3. 文件内容如下:

在这里插入图片描述

4. 经过deepseek分析:

在这里插入图片描述

4. 问题解决

根据 GDB 完整堆栈回溯信息,问题的根源已经很明显了

OpenSSL库版本冲突 ,有两个库版本,ODBC驱动尝试初始化SSL连接时,不同版本的OpenSSL库发生冲突,导致内存访问异常

在这里插入图片描述

确实是有两个,而且那个还是前一天我安装 python 时候产生的。

直接删除openssl111,因为openssl111 安装前,一直是正常的。肯定是 openssl111 安装了,导致出问题

删除后,执行代码,一切正常。终于解决

三、赠送内容

以下是监控 PHP-FPM 主进程,然后程序崩溃时,可以查看具体情况

 # 附加到 PHP-FPM 主进程
sudo gdb -p $(pgrep -o php-fpm)# 当崩溃发生时,输入以下命令抓取堆栈
(gdb) bt full             # 查看完整调用栈
(gdb) info threads        # 查看所有线程状态
(gdb) quit                # 退出

四、总结

整个过程非常艰辛,由什么问题都不知道一直到解决,查了很多资料。走了很多的弯路。

一些工具都是第一次使, core dump,gdb 以前基本上没使用过。

需要持续的学习,持续的踩坑,才能到达最终的彼岸 =》保安


http://www.hkcw.cn/article/rSKhtDcfjK.shtml

相关文章

灵动相册,助力教学:在线教学场景的图片管理利器——仙盟引渡仙君-智能编程——仙盟创梦IDE

专为在线教学打造的相册工具,以蓝色专业风设计,纯前端实现,不依赖后端。具备图片管理、浏览缩放及上传功能。界面布局合理,交互体验佳,响应式适应多屏。模块化设计易维护扩展,助教师轻松管图,学…

网络攻防技术三:网络脆弱性分析

文章目录 一、影响安全的因素二、计算机网络三、网络体系结构脆弱性1、因特网容易被攻击的特性 四、典型网络协议安全性分析(重要)1、IPv42、RIP(UDP)3、ICMP(UDP)4、ARP5、OSPF(IP数据报)6、BGP(TCP)7、UDP8、TCP9、DNS(UDP)10、…

20250602在荣品的PRO-RK3566开发板的Android13下打开关机对话框

20250602在荣品的PRO-RK3566开发板的Android13下打开关机对话框 2025/6/2 15:07 缘起:需要在荣品的PRO-RK3566开发板的Android13下,打开/增加关机对话框这个功能。 因为手机都有。那我们就找资料吧。 参考资料: https://blog.csdn.net/terry_…

mac电脑安装 nvm 报错如何解决

前言 已知:安装nvm成功;终端输入nvm -v 有版本返回 1. 启动全局配置环境变量失败 source ~/.zshrc~ 返回: source: no such file or directory: /Users/你的用户名/.zshrc~2 安装node失败 nvm install 16.13返回: mkdir: /U…

SOC-ESP32S3部分:26-物联网MQTT连云

飞书文档https://x509p6c8to.feishu.cn/wiki/IGCawAgqFibop7kO83KcsDFBnNb ESP-MQTT 是 MQTT 协议客户端的实现,MQTT 是一种基于发布/订阅模式的轻量级消息传输协议。ESP-MQTT 当前支持 MQTT v5.0。 特性 支持基于 TCP 的 MQTT、基于 Mbed TLS 的 SSL、基于 WebSo…

樊振东德国看球笑容满面 现身欧冠决赛现场

樊振东德国看球笑容满面 现身欧冠决赛现场!5月31日,樊振东在社交媒体上晒照发文:Guten Morgen, Mnchen! 早上好,慕尼黑!樊振东将作为特邀嘉宾现身欧冠决赛现场,观看巴黎圣日耳曼对阵国际米兰的比赛。这场2024至2025赛季欧洲足坛的巅峰对决将于北京时间6月1日凌晨在慕尼黑…

财经观察:一颗大豆的全球化博弈

【环球时报综合报道】编者的话:美国农业部出口检验报告显示,截至2025年5月15日的一周,美国大豆出口检验量较一周前减少50%,为21.78万吨,远低于市场普遍预期的42.5万吨。外媒分析称,受美国发起的关税战影响,美国大豆出口下降,巴西、阿根廷等国正在抓紧拓展中国大豆市场。…

(16)课35:分组时可以指定多个列名,以进行更细致的分组。窗口函数的练习例题:例题一学生成绩,

(84)分组时可以指定多个列名,一言也是这么说的 : 测试一下 : (85)练习一 : 针对该表完成第二个例题 : (86) 例题二 : (8…

聚类分析 | MATLAB实现基于SOM自组织特征映射聚类可视化

聚类分析 | MATLAB实现基于SOM自组织特征映射聚类可视化 目录 聚类分析 | MATLAB实现基于SOM自组织特征映射聚类可视化效果一览 完整代码:[聚类分析 | MATLAB实现基于SOM自组织特征映射聚类可视化](https://blog.csdn.net/kjm13182345320/article/details/148350983…

【C++】23. unordered_map和unordered_set的使用

1. unordered_set系列的使用 1.1 unordered_set和unordered_multiset参考文档 https://legacy.cplusplus.com/reference/unordered_set/ 1.2 unordered_set类的详细介绍 • unordered_set的声明模板如下&#xff1a; template<class Key,class Hash std::hash<Ke…

意识之谜 | 粒子组合与单一意识的诞生

注&#xff1a;本文为“脑意识”相关合辑。 略作重排&#xff0c;未做探析。 从粒子到意识&#xff1a;人类大脑单意识诞生之谜 一、单个粒子无意识的本质原因 单个粒子作为物质的基本单元&#xff0c;仅遵循物理化学规律进行运动和相互作用&#xff0c;其行为具有机械性与确…

【更新至2023年】2000-2023年上市公司绿色专利申请授权面板数据

2000-2023年上市公司绿色专利申请授权面板数据 1、时间&#xff1a;2000-2023年 2、来源&#xff1a;国家知识产权局、WPIO清单 3、指标&#xff1a;年份、股票代码、股票简称、行业名称、行业代码、省份、城市、区县、区县代码、上市状态、绿色专利申请总量、绿色发明专利申…

第4章:操作系统

操作系统目的是&#xff1a;为了填补人与机器之间的鸿沟&#xff0c;即建立用户与计算机之间的接口&#xff0c;而为裸机配置的一种系统软件。 系统软件&#xff1a;编辑程序、汇编程序、编译程序、数据库管理系统等 操作系统在计算机系统中的地位&#xff1a; 程序与进程 程…

可靠性方框图绘制说明

下载安装绘制软件&#xff08;Isograph&#xff09;&#xff1a; Isograph Reliability Workbench 14.0 链接&#xff1a;https://pan.baidu.com/s/1owsSJWLtkqAQhbpWdK8keA?pwd49iu 提取码&#xff1a;49iu 制作可靠性方框图 创建RBD&#xff08;可靠性方框图&#xff…

Nougat:用于学术文档的神经光学理解

摘要 科学知识主要以PDF形式存储于书籍和科学期刊中。然而&#xff0c;PDF格式会导致语义信息的丢失&#xff0c;尤其是在数学表达式方面。我们提出了Nougat&#xff08;Neural Optical Understanding for Academic Documents&#xff09;&#xff0c;这是一种Visual transfor…

移除3D对象的某些部分点云

1&#xff0c;目的 移除3D对象指定区域的点云。效果 2&#xff0c;原理。 通过投影剔除指定区域外的点云数据。 3&#xff0c;主要的算子。 3.1&#xff0c;gen_image_gray_ramp 是 Halcon 中用于生成‌线性灰度渐变图像‌的算子 功能概述‌ 数学原理‌ 生成的图像灰度值…

达芬奇(DaVinci Resolve)下载安装教程

目录 一、软件介绍 二、软件下载 2.1 浏览器访问官网 2.2 进行软件包下载 三、软件安装 3.1 解压软件包 3.2 安装软件 四、基本配置 4.1 语言设置 4.2 其他设置 一、软件介绍 达芬奇&#xff08;DaVinci Resolve&#xff09;视频调色软件。DaVinci Resolve汇集剪辑、…

教室门口160cm是小学生低头线 高中版引发热议

教室门口160cm是小学生低头线!5月27日,山东济宁某高中教室内发生了一件有趣的事情。课间休息时,一位老师注意到学生们普遍较高,旁边正好站着一个身高182厘米的男生,于是老师以他为参照,在教室门口贴上一条胶带作为身高线。结果发现,不少男生经过时都需要低头,这一现象迅…

印尼力邀中企深化产业下游化 共创可持续发展

在印尼谈到与中国的经贸合作,“下游化”是最常提到的词。印尼国土辽阔,镍矿资源的储量和产量皆名列全球第一。坐拥全球绿色能源转型的关键金属,印尼吸引了大量全球投资者。单纯出口原始矿藏对当地就业帮助甚少,且由于附加值低,对印尼财政增收贡献有限。为此,印尼近10年来…

《天下第一楼》迎第600场演出 经典传承再续辉煌

6月2日晚,由何冀平编剧,夏淳、顾威、闫锐导演的北京人艺经典话剧《天下第一楼》在首都剧场迎来第600场演出。北京人艺院长冯远征当天再次强调了“深入生活、体验生活”对创作者的重要性。这部作品讲述了上个世纪初北京城饮食界老字号饭庄“福聚德”在时代变迁中的兴衰史。自1…