PHP读取远程URL出现 file_get_contents(): SSL operation failed with code 1. OpenSSL ...

今天在敲代码测试的时候 file_get_contents() 报错了

file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed

很奇怪,之前一直没有这个错误,想到前几天刚换了一台新的服务器,环境新搭建的,可能是环境的问题,就将新的服务器和老服务器环境对比了一下,没有发现哪里不一样,于是百度查了一下,不是我要的答案,果断继续查找,之后还是不知道是什么原因,于是选择一种我能接受的方式修改了

这个错误的意思是说,证书不一致,我也不知道哪里不一样,于是下载证书

下载证书地址:curl - Extract CA Certs from Mozilla

在linux中打开pnp.ini ,找到 openssl.cafile,将地址填上去,重启服务器,OK

如果哪位大佬知道哪里的错误,麻烦告知,谢谢

今天又碰到一个问题

file_get_contents failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request 

原因1:url参数值没有url编码

用 urlencode($val) 来编码参数的值,注意是参数值

原因2:url中有空格

$url = preg_replace("/ /", "%20", $url); //用正则把空格替换成%20

原因3:配置问题(修改php.ini,并重启服务器)

把allow_url_fopen给启用,

改成 allow_url_fopen = On

allow_url_fopen =on(表示可以通过url打开远程文件)

user_agent=”PHP”(表示通过哪种脚本访问网络,默认前面有个 ” ; ” 去掉即可。)重启服务器。

可能还警告信息,想用完美的解决还差一步,还得设置php.ini里面的user_agent,默认的user_agent是PHP,把它改成Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)来模拟浏览器

user_agent=”Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"

我的原因就是url中有空格,删掉空格就好了

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值