前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记录file_get_contents返回空字符串的问题

记录file_get_contents返回空字符串的问题

作者头像
LA0WAN9
发布2021-12-14 08:44:12
7050
发布2021-12-14 08:44:12
举报
文章被收录于专栏:火丁笔记

群里一位大佬上午说了一句箴言:「 世界上没有什么故障是重启解决不了的,如果有,再重启一次。」,结果下午群里就有一位朋友遇到了一个诡异的老版本 PHP 问题:当使用 file_get_contents 抓取网页内容的时候,总是返回空字符串,奇怪的是换用 curl 扩展后又一切正常。不过,重启没有解决他的问题,再重启一次也不行。

既然 curl 能够正常工作,至少可以证明网络本身没问题。

首先值得怀疑的是 allow_url_fopen 配置。如果没有开启它的话, file_get_contents 是不能访问远程地址的。(排除!)

接着还怀疑过是不是和 ignore_errors 配置有关。(排除!)

然后尝试着用 strace、ltrace 跟踪了一下代码,发现目标服务器已经接收到了请求,并且成功返回了数据,可是 file_get_contents 就是返回空。

问题到了这里似乎没招儿了。试着查看了一下 PHP 的编译参数,发现了一个少见的选项:with-curl-wrappers,相对应的搜索到了 PHP RFC 里一篇介绍文章:Request for Comments: Removal of curl-wrappers,大概看了看,感觉这东西就是一个坑啊,基本锁定问题就是出在它身上。

试着去掉 with-curl-wrappers 重新编译一下 PHP,尼玛问题依旧!不过想到刚刚重新编译 PHP 的时间非常短,猜想是不是有什么残留数据干扰了结果,于是在「make」前加了一步「make clean」,终于一切都正常了!

记得小学写作文的时候,老师教我们要首尾呼应,那好吧,请允许我调皮一下:「 世界上没有什么故障是重启解决不了的,如果有,再重启一次。」

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-03-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档