产品服务AMH 免费服务器主机面板SSL证书 免费SSL证书申请 担保单 免费安全、零费率交易平台编程助手免费智能写代码、翻译AMYSQL 免费MySQL管理工具

AMH 社区首页

 AMH社区 - 开放自由有价值的社区

[求助帖] [CP原创教程]解决amh面板使用curl ssl https 时nginx报502的错误...

Captain
金牌会员
6928.40 价值分

Captain 发表于 2014-04-21 02:04:08
本帖最后由 Captain 于 2014-4-21 02:17 编辑

 
 
注意:教程是php5.2环境下的,5.3若出现同样问题,同学们也可以依葫芦画瓢,举一反三

教程目的:由于客户要用到QQ互联、微博互联、百度登录互联等其他帐号互联
php5.3可以正常curl到https的数据,但是由于客户是老程序,必须要用zend,所以装了php5.2.17p1(教程http://amysql.com/bbs/forum.php?mod=viewthread&tid=1015
php5.2.17p1+zend+eAccelerator+兼容模式都很顺利
但是在此环境下做curl 获取ssl https 时nginx一直出现502错误,查看phpinfo和探针,明显是支持的curl和openssl的,而且还是较新的版本
在调整了niginx和php-fpm参数多次完全无效

解决:通过升级curl版本解决curl ssl https 时nginx报502的错误问题



查阅很多资料(比如论坛的http://amysql.com/bbs/post-646-1-1.htm),怀疑系统是centos6.5 64bit内核(2.6.32-431.11.2.el6.x86_64)下,在安装过程或者本身程序造成的curl或者openssl版本不兼容的问题

接下来着手解决,重新编译安装curl然后编译php5.2.17

一、重新编译安装新版本的curl,机器上原来的版本是curl 7.19.7,这里安装的是7.35

cd /root/
wget http://curl.haxx.se/download/curl-7.35.0.tar.gz
tar -zxvf curl-7.35.0.tar.gz
cd curl-7.35.0.tar.gz
./configure --prefix=/usr/local/curl
make
make install

二、删除原来安装的5.2.17,下载amh的5.2.17安装脚本,修改脚本,重新编译5.2.17

首先必须删除原来安装的5.2.17
rm -rf /usr/local/php-5.2/*
下载5.2.17安装脚本(64位系统装不了的话,请参考http://amysql.com/bbs/forum.php? ... 401&page=1#pid16672
wget http://code.amysql.com/files/php-5.2.sh;
修改安装脚本,对比修改,详见红色部分(--with-curl修改成--with-curl=/usr/local/curl/
引用:
./configure --prefix=/usr/local/php-5.2 --enable-fastcgi --enable-fpm --with-config-file-path=/usr/local/php-5.2/etc --with-openssl --with-zlib --with-curl=/usr/local/curl/ --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;

保存上传后继续按安装教程继续安装5.2.17

三、用管理员大大提供的脚本测试一下是否还是502(http://amysql.com/bbs/forum.php? ... id=3887&fromuid=119

先切换到兼容模式
然后切换主机到php5.2版本:/usr/local/php-5.2/php52 php-5.2 xxxx.com(xxxx.com请自行修改)
接下来用测试文件测试下curl 获取ssl https是否还是502了
<?php

function niuc_curl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_REFERER, $_G['siteurl']);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}

$url = 'https://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code&code='.$code.'&client_id='.$apikey.'&client_secret='.$secretkey.'&redirect_uri='.$redirecturi;
if(function_exists('curl_init')) {
$result = niuc_curl($url);
echo 'niuc_curl ok...';
} else {
$result = file_get_contents($url);
echo 'file_get_contents ok...';
}
$token_arr = (array)json_decode($result);
if(!$token_arr['access_token']){
if($result == '') {
echo 'Error';
}
else
{
echo 'OK';
}
exit;
}

?>
测试文件直接下载:
http://amysql.com/bbs/forum.php? ... DJ8MTE5fDY0Ng%3D%3D


四、确认没问题继续安装其他zend和ea等插件

第三步确认curl不再502后,把zend和ea装上


大功告成~~~





评价: 这个问题有价值吗?  没有 (0分)   有, 感谢 (2分)
2014-04-21 02:04:08 1

amysql
创始人
99532.51 价值分

支持原创,感谢CP分享。
评价: 这个答复有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2014-04-21 12:29:37 2

AMH面板 - 好用高效低占用、安全可靠极稳定

 1  (总1页)
AMH社区列表
用户服务中心