linux系统提示文件描述符错误:Warning: stream_socket_accept(): accept failed: 的解决办法
这个错误的核心是进程打开的文件描述符(File Descriptor)数量超过了系统/进程的限制,Linux下所有套接字(socket)、文件、管道等都会占用文件描述符,以下是完整的排查和解决步骤:
查看系统级最大文件描述符限制
查看当前用户的软/硬限制(PHP进程所属用户,通常是www/www-data)
# 查看软限制(当前生效的限制、查看硬限制(最大可调整到的限制)
> 注:默认软限制通常是1024,硬限制是4096,这是导致报错的常见原因。
定位报错的PHP进程,查看其打开的文件数
# 找到sc2.php对应的进程PID(替换为实际端口/脚本名)
# 查看该进程打开的文件描述符数量(替换PID为实际值)
查询完成后如图:目前在用的链接数量是【77】个,当然这是测试机,不是正常,不然这点数量不可能崩溃的哈。
立即生效,重启后失效,临时提升当前用户的软/硬限制(仅当前会话)
设置完成后如图,当然了,临时设置,有些操作命令之后可能失效了,不仅仅限于重启操作,临时过渡使用。
关闭终端页面,重新查看,是的不需要重启,关闭终端就恢复了,不信你看,是不是恢复默认的1024啦。
重启后生效,修改用户级限制配置(/etc/security/limits.conf)
# 编辑配置文件(root权限)
添加以下内容(针对PHP运行用户,比如www,*表示所有用户):
在 /etc/security/limits.d/*.conf 配置文件可能是(*-nproc.conf)
修改系统内核参数(/etc/sysctl.conf)
# 编辑内核配置(root权限)
重启之后我们再次运行命令:
调整Web服务器限制(Nginx)
编辑`nginx.conf`
宝塔后台, 软件 商店,找到NGINX,点击设置,找到【性能调整】,找到【worker_connetctions】设置最大并发连接数,提升worker进程的文件描述符限制
宝塔面板的话找到【服务】【重载配置】即可。
1. 优先通过`limits.conf`和`sysctl.conf`永久提升文件描述符限制;
2. 必须修复PHP代码中文件/套接字未关闭的泄漏问题(治本);
curl 升级:降低安全风险,开启更高效稳定网络体验
记录linux系统安装和部署国产达梦DM8数据库的相关步骤信息
参见
- 江苏省严重失信黑名单社会公示管理办法(试行)2026-11-03
- 北京和盛家政有限公司2026-11-03
- 习近平对进一步做好黄河保护治理工作作出重要指示强调 持续完善大保护大协同格局 努力让这条母亲河越来越美_2026-11-03
- 纪念中国工农红军长征胜利90周年大会在京隆重举行 习近平发表重要讲话2026-11-03
- 政策组合拳激活住房消费新动能——解读《关于加快商品房去库存稳定房地产市场的若干措施》2026-11-03
- 新疆出台新版自治区级重要湿地认定发布规定2026-11-03