• 云途科技成立于2010年 - 专注全球跨境电商服务器租赁托管!
  • 帮助中心

    您可以通过下方搜索框快速查找您想知道的问题

    解决Unable to find the wrapper "https"的二种方法

      in  unix      Tags: 

    先啰嗦一下,这个问题其实通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模块时,老是提示如下信息。

    /home/download/php-5.2.6/ext/openssl/openssl.c:229: error: expected specifier-qualifier-list before 'LHASH'
    /home/download/php-5.2.6/ext/openssl/openssl.c:410: error: expected declaration specifiers or '...' before 'LHASH'
    /home/download/php-5.2.6/ext/openssl/openssl.c: In function 'php_openssl_config_check_syntax':
    /home/download/php-5.2.6/ext/openssl/openssl.c:416: error: 'config' undeclared (first use in this function)
    /home/download/php-5.2.6/ext/openssl/openssl.c:416: error: (Each undeclared identifier is reported only once
    /home/download/php-5.2.6/ext/openssl/openssl.c:416: error: for each function it appears in.)
    /home/download/php-5.2.6/ext/openssl/openssl.c: In function 'add_oid_section':
    /home/download/php-5.2.6/ext/openssl/openssl.c:435: error: 'struct php_x509_request' has no member named 'req_config'
    /home/download/php-5.2.6/ext/openssl/openssl.c:439: error: 'struct php_x509_request' has no member named 'req_config'

    我在网上找了好多方法,没有一个可行的。

    导致这种情况产生的原因我分析了一下:

    1,依赖关系没有处理,因为php5.2.6我是手动安装的,并且php5.2.6相对于CentOS6来说是比较老的了。

    2,php5.2.6根64位的CentOS兼容性性问题,如果是这样的问题,那就麻烦了,不过我觉得这种可能性比较小。

    我的建议是,最好不要手动去编译php,mysql这类的,以前我是很喜欢手动编译的,因为好控制。但是如果系统升级了,或者php自身要升级了,到时又挺麻烦的,所以在可以用管理工具的情况下,还是用管理工具比较好的。

    上面扯了这么多,还没有说到实质性的东西。哈哈。

    1,先确认一下,你的系统中有的有木有openssl,如果没有安装一下openssl

    2,先确认一下,有没有装过libiconv,这个是php的支持库,如果没有安装一下,一般情况是有的,系统不同,可能有的有,有的没有

    3,如果上面都没有问题,你就可以用phpize来编译openssl模块,或者是重新把php编译一下

    上面的操作具体步骤就不详细说了,下面推荐另一种方法,更好用。

    解决方法二,通过curl来抓取https的数据,或者是模拟登录

    $url = 'https://接域名'
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec($ch);

    解决了这个问题后,你可以干什么呢,比较如模块登录到有https的网站啊,可以来抓取https网站的内容等。关于curl的例子请参考:php curl常用的5个例子



    • 外贸虚拟主机

      1GB硬盘

      2个独立站点

      1000M带宽

      不限制流量

      美国外贸专用虚拟主机,cPanel面板,每天远程备份.
      服务器配置:2*E5 32核,96GB 内存,4*2TB 硬盘 RAID10 阵列.

      ¥180/年

    • 美国/荷兰外贸VPS

      2核CPU

      1G内存

      30硬盘

      10M带宽

      美国/荷兰外贸云服务器,专注外贸服务器行业12年.
      服务器配置:2*E5 32核,96GB 内存,4*2TB 硬盘 RAID10 阵列.

      ¥99/月

    • 全球外贸服务器

      8核CPU

      32G内存

      1TB硬盘

      1000M带宽

      已部署数据中心:美国洛杉矶/亚特兰大、荷兰、加拿大、英国伦敦、德国、拉脱维亚、瑞典、爱沙尼亚
      自有机柜(全球九大数据中心),稳定在线率:99.9%

      ¥999/月 原价1380

    7*24小时 在线提交工单

    如果您的问题没有得到解决,推荐您在线提交工单,我们的客服人员会第一时间为您解决问题

    展开