phpcurlhttps
A. php使用CURL请求https的微信统一下单接口时报错,同样的代码我在另一台机器上运行是正常的
我也遇到了同样的问题,只要是走微信,偶尔都会请求不到,原来是正常的。今天排查了一天,终于找到了原因所在。
centos原生用的NSS,而不是OpenSSL,curl调用NSS库请求https时偶尔会出现请求不到的情况。
解决方案:
参考网址:网页链接
按步骤完成后记得重启 php-fpm和nginx
B. php 用curl获取https地址
你就算是
注释1和注释2都没有他照样会有数据输出
因为 他默认是输出你获得到的数据
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//输出内容为字符串
你要加上上面这一句话
这样就不会输出获取到的数据
C. php用curl时,HTTP链接正常,HTTPS时,获取不到数据
https 需要认证。
简易方法 (不认证,不安全)
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
安全方法(认证,安全):
用firefox查出网站的CA certificate,下戴, 然后
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/CAcerts/BuiltinObjectToken-EquifaxSecureCA.crt");
D. PHP使用curl访问https页面的问题
你试试 curl_multi_getcontent( resource $ch ) 我记得这个东西是要接受的 忘了是在传过去的页面还是本页面
E. php通过curl发送post json给https产生502错误问题!
curl_setopt(self::$ch,CURLOPT_USERAGENT,"Mozilla/5.0(Macintosh;IntelMacOSX10_10_2)AppleWebKit/600.3.18(KHTML,likeGecko)Version/8.0.3Safari/600.3.18");
加一个这个参数模拟浏览器,看看有没有作用
有些服务器非浏览器访问就会502
F. 在php中调用curl读https网页,读不出来,怎么回事
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$api); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//禁止直接显示获取的内容 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //不验证证书下同 curl_setopt($ch, CURLOPT_SSL_VERIFYH...
G. php curl调用http与https有何不同
https要求有证书,通常可以通过
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);//SSL报错时使用
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);//SSL报错时使用
对证书进行屏蔽。
如果是你自己本身需要验证证书,那就不能屏蔽这里了。
更多PHPcURL内容请参考我的博客《PHPcURL实现模拟登录与采集使用方法详解教程》
H. 对于https协议的网站,可以用php 的curl来模拟get请求和post请求吗,能得到返回值吗
可以。
CURLOPT_PROTOCOLS
CURLPROTO_* 的位域指。如果被启用,位域值会限定libcurl在传输过程中有哪些可使用的协议。这将允许你在编译libcurl时支持众多协议,但是限制只是用它们中被允许使用的一个子集。默认libcurl将会使用全部它支持的协议。参见 CURLOPT_REDIR_PROTOCOLS .
可用的协议选项为:CURLPROTO_HTTP、CURLPROTO_HTTPS、CURLPROTO_FTP、CURLPROTO_FTPS、CURLPROTO_SCP、CURLPROTO_SFTP、CURLPROTO_TELNET、CURLPROTO_LDAP、CURLPROTO_LDAPS、CURLPROTO_DICT、CURLPROTO_FILE、CURLPROTO_TFTP、CURLPROTO_ALL
对了,可定能得到返回值