《LINUX PHP7如何把curl扩展的SSL版本从NSS改为OpenSSL以支持openssl》要点:
本文介绍了LINUX PHP7如何把curl扩展的SSL版本从NSS改为OpenSSL以支持openssl,希望对您有用。如果有疑问,可以联系我们。
相关主题:PHP缓存
本文环境:
LINUX(centos ) 6
PHP 7
原系统自带curl
全文由维易PHP(www.vephp.com) 实测。
系统原来安装的是PHP7.0.11,编译时,带了参数--with-curl 这样编译的结果是curl不支持Openssl,而是默认的NSS,参图
因项目需要,要把curl的NSS改为openssl,网络上一教都是叫你做这两步:
1、安装curl
2、安装php的curl.so扩展。或安装openssl扩展(小编注:要不要安装主要取决于你的PHP是否有这两个扩展,执行php -m可以看到)
这个对PHP7以下的版本可能是可以的,但PHP7不行,
PHP7默认就是把curl整合到PHP中,后期编译了curl.so也不能用。
需要这样做才行:
1、安装curl
2、重新编译PHP:就是把原来--with-curl 选项改为--with-curl=/usr/local/curl 然后重新编译安装。
# wget https://curl.haxx.se/download/curl-7.58.0.tar.gz
# tar xvzf curl-7.58.0.tar.gz
# cd curl-7.58.0
# ./configure --prefix=/usr/local/curl/ --without-nss --with-ssl
# make && make install
备份原先系统上的默认的curl命令:
# mv /usr/bin/curl /usr/bin/curl.bak
# mv /usr/bin/curl-config /usr/bin/curl-config.bak
然后做一个新的curl软链:
# ln -s /usr/local/curl/bin/curl /usr/bin/curl
# cp /usr/local/curl/bin/curl-config /usr/bin/curl-config
# echo "/usr/local/lib" >> /etc/ld.so.conf
# ldconfig
现在,
执行 curl --version 看看是否是openssl的版本,如下:
# curl --version curl 7.58.0 (x86_64-pc-linux-gnu) libcurl/7.58.0 OpenSSL/1.0.1e zlib/1.2.3 Release-Date: 2018-01-24 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp Features: AsynchDNS Largefile NTLM NTLM_WB SSL libz UnixSockets HTTPS-proxy
只要把原来--with-curl 选项改为--with-curl=/usr/local/curl 即可。
执行 php -m 检查是否已带上curl扩展了,如果有,不需要安装curl.so,否则会出现:
[12-Mar-2018 12:24:16] NOTICE: PHP message: PHP Warning: PHP Startup: Invalid library (maybe not a PHP library) 'curl.so' in Unknown on line 0
这种错误,把你安装的curl.ini去掉即可。
重新编译安装PHP后就可以了,重启,执行phpinfo()可以看到如图:
(完)