今天在敲代码测试的时候 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中有空格,删掉空格就好了