微信支付接口关于curl的大坑,报58和77错误的原因找到啦!

最近在开发微信红包活动的小程序,今天莫名其妙的就卡在了最后一步,想服务器post数据 ,保修带上签名和证书。但是证书这里一直再报curl的58错误。 后来有人在网上贴了下面的帖子,解决58的错误

<?php 
curl_setopt($ch, CURLOPT_VERBOSE, '1');//启用时会汇报所有的信息,存放在STDERR或指定的 CURLOPT_STDERR 中。
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, '2');//2 检查公用名是否存在,并且是否与提供的主机名匹配。
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, '1');//cURL从服务端进行验证
curl_setopt($ch, CURLOPT_CAINFO,  getcwd().'/cert/ca.crt'); 
curl_setopt($ch, CURLOPT_SSLCERT, getcwd().'/cert/mycert.pem'); 
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'password'); 
?>

如果是这样写 ,会报77错误,因为启动了严格比对。改回去还是会报58错误。 我决定还是在本地测试好了再上服务器折腾,我的开发机是苹果OS系统,发现不管怎么改都报58错误,又baidu又google折腾了一下午,后来看到一个牛人找到了原因,是说OS系统的ssl协议和windows的不一样,苹果的ssl协议栈是Secure Transport 而微信支付的接口SSL协议栈是openssl协议栈,这个哥们改掉此处大坑以后,顺利测试通过。 我忽然想到,是不是Centos6.5的curl SSL协议栈也不是openssl,打开phpinfo()看,果然不是,是NSS。找到原因了。 怎么搞? 1、先把openssl更新到最新版本

2、先修改centos6.5的curl的SSL Version ssh链接linux,登录以后,

curl --version

输入图片说明 如果写的是nss 那就接着改吧。 3、下载curl

wget https://curl.haxx.se/download/archeology/curl-7.19.7.tar.gz
tar xvzf curl-7.19.7.tar.gz
cd curl-7.19.7
./configure --prefix=/usr/local/curl/ --without-nss --with-ssl
sudo make && sudo make install

下载并安装 注意一定要--without-nss --with-ssl 备份默认的curl二进制文件 sudo mv /usr/bin/curl /usr/bin/curl.bak 然后做一个新的curl软链 sudo ln -s /usr/local/curl/bin/curl /usr/bin/curl 然后再curl --version确认是否已经是openssl的版本 这个时候已经可以看到curl采用openssl了 4、下载php,编译curl扩展

wget http://cn2.php.net/get/php-5.3.27.tar.gz
tar xvzf php-5.3.27.tar.gz
cd phpphp-5.3.27/ext/curl
phpize
./configure --with-curl=/usr/local/curl/ --with-php-config=/usr/local/php/bin/php-config
sudo make && sudo make install

安装完毕以后会在/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/目录下生成curl.so 如果过去这个目录有curl.os,需要提前删掉它。 5、编译php 先去phpinfo看一下php配置信息。复制下来。 输入图片说明 将里面的curl部分“--with-crul”删掉。

# cd php-5.3.27.tar.gz
# './configure' '--prefix=/usr/local/php' '--enable-fpm' '--with-fpm-user=www' '--with-fpm-group=www' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--with-openssl' '--with-zlib' '--enable-ftp' '--with-gd' '--with-jpeg-dir' '--with-png-dir' '--with-freetype-dir' '--enable-gd-native-ttf' '--enable-mbstring' '--enable-zip' '--with-iconv=/usr/local/libiconv' '--with-mysql=/usr/local/mysql' '--without-pear'
# make && make install

修改php.ini 添加extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/curl.so 6、安装完了 重启php-fpm

killall php-fpm 
/usr/local/php/sbin/php-fpm &

先杀掉所有php-fpm线程,在启动。(最后我重启了一下) 测试,通过,不在报58号错误了。红包叮当发到手机里了。

转载于:https://my.oschina.net/lambert519/blog/871238

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值