技术饭
解决Unable to find the wrapper "https"的二种方法
这个问题其实通php加载openssl模块来解决,是件挺容易的事,但是牵扯到用什么linux系统,以及是用多少位的linux系统,以及php自身的版本问题,以及是不是手动安装,还是管理工具安装时,其实有的时候,还是比较麻的。
解决方法一,php加载openssl模块
遇到这个问题时,我的第一反映就是加openssl模块,但是不好加啊。开发的时候测试服务器是2000块多台式机,系统是32位的centos5.5,php是5.2.6.到正式服务器是用的是64位的centos6,代码是基于php5.2.6开发的,所以没办法正式服务器手动安装php的5.2.6(没有找到可以管理工具安装的源),保重测试服务器和正式服务器一样
当我在正式服务器用phpize来编译安装openssl模块时,老是提示如下信息。
我在网上找了好多方法,没有一个可行的。
1,先确认一下,你的系统中有的有木有openssl,如果没有安装一下openssl
2,先确认一下,有没有装过libiconv,这个是php的支持库,如果没有安装一下,一般情况是有的,系统不同,可能有的有,有的没有
3,如果上面都没有问题,你就可以用phpize来编译openssl模块,或者是重新把php编译一下
上面的操作具体步骤就不详细说了,下面推荐另一种方法,更好用。
解决方法二,通过curl来抓取https的数据,或者是模拟登录
//远程抓取
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $water_img);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
//将二级制图片存入服务器,file_put_contents() 方法可能有欠缺
file_put_contents($filePath, $result);
解决了这个问题后,你可以干什么呢,比较如模块登录到有https的网站啊,可以来抓取https网站的内容等。关于curl的例子请参考:php curl常用的5个例子
文明上网理性发言!