You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
./configure -prefix=/usr/local/curl/ -with-ssl=/usr/lib64 -with-libidn
with-ssl就是关键,网上说这里的with-ssl应该指向ssl的库目录,我系统中的ssl安装目录为/usr/local/ssl ,但是设置下来,在编译的时候会提示:
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../../lib/libssl.a(s2_clnt.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../../lib/libssl.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
案例
一个php的测试用例test_curl.php:
假设现在可以访问该php脚本,浏览器中输入 you_url/test_curl.php。然后会有输出:
在linux上,你也可以直接通过curl命令来测试。
解决
根据提示了解到该libcur是不支持https协议的。我们的脚本是放在linux下,通过命令:
curl -V 可以查看支持的协议类型,发现的确不支持https协议。解决方法是重新安装libcurl以支持https。
支持https实际上就是支持ssl加密。
这里需要用到的包主要有两个:libcurl和php源码包。
安装libcurl
下载源码包并解压,进入目录,开始配置。
根据这段提示可以看到我们是对libssl进行静态链接,实际上我们应该要进行动态链接,包括php链接curl以及apache链接php都是动态链接的方式。因此,我们真正需要链接libssl.so,在/usr/lib64下。
(ps:网上根据提示,修改了configure参数来进行静态链接--disable-file --without-pic --disable-shared,这样编译能通过,但是后面php在链接curl的时候依然会有类似的提示)
在configure之后,最后他会列出一些feature的支持情况,例如: ssl : enable (openssl)。
另外,在configure curl的时候,有几个库是需要安装的,不然configure会出错:
由于我的机器无法进行在线安装,我恨透了rpm的各种包管理,他的包检查非常严格,依赖的rpm包版本号很严格。
configure之后就是make 和make install了。
安装好之后可以测试一下是否支持https:
/usr/local/curl/bin/curl -V
安装php
下载源码包解压,进入目录,开始配置。
然后编译安装:
重启apache即可
索引:
http://help.directadmin.com/item.php?id=314
http://www.111cn.net/sys/linux/52561.htm
http://www.linuxidc.com/Linux/2012-02/55234.htm
http://curl.haxx.se/libcurl/php/install.html
https://bbs.et8.net/bbs/showthread.php?p=10143459
The text was updated successfully, but these errors were encountered: