Linux下PHP安装curl扩展支持https例子

问题:
 
线上运行的lamp服务器,默认yum安装的curl模块只支持http,不支持https。
 
解决方法:
 
编译安装curl,重新编译php,使php的curl模块支持https。
 
具体步骤:
 
1、下载curl
 
cd /usr/local/src  #进入安装包存放目录
 
wget http://curl.haxx.se/download/curl-7.44.0.tar.gz  #下载
 
2、安装curl
 
cd /usr/local/src
 
tar zxvf curl-7.44.0.tar.gz  #解压
 
cd curl-7.44.0  #进入包安装目录
 
./configure --prefix=/usr/local/curl --with-gssapi --enable-tls-srp --with-libmetalink  #配置
 
make  #编译
 
make install  #安装
 
3、重新编译php
 
查找系统之前的php编译参数
 
/usr/local/php/bin/php -i | grep configure    #查看php编译参数
 
如下:
 
'./configure' '--prefix=/usr/local/php' '--with-config-file-path=/usr/local/php/etc' '--with-apxs2=/usr/local/apache/bin/apxs' '--with-mysql=/usr/local/mysql' '--with-mysqli=/usr/local/mysql/bin/mysql_config' '--with-mysql-sock=/tmp/mysql.sock' '--with-pdo-mysql=/usr/local/mysql' '--with-gd' '--with-png-dir=/usr/local/libpng' '--with-jpeg-dir=/usr/local/jpeg' '--with-freetype-dir=/usr/local/freetype' '--with-xpm-dir=/usr/' '--with-zlib-dir=/usr/local/zlib' '--with-t1lib=/usr/local/t1lib' '--with-iconv' '--enable-libxml' '--enable-xml' '--enable-bcmath' '--enable-shmop' '--enable-sysvsem' '--enable-inline-optimization' '--enable-mbregex' '--enable-mbstring' '--enable-ftp' '--enable-gd-native-ttf' '--with-openssl' '--enable-pcntl' '--enable-sockets' '--with-xmlrpc' '--enable-zip' '--enable-soap' '--without-pear' '--with-gettext' '--enable-session' '--with-mcrypt' '--with-curl ' '--enable-ctype'
 
对参数进行修改:
 
如下
 
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/tmp/mysql.sock --with-pdo-mysql=/usr/local/mysql --with-gd --with-png-dir=/usr/local/libpng --with-jpeg-dir=/usr/local/jpeg --with-freetype-dir=/usr/local/freetype --with-xpm-dir=/usr/ --with-zlib-dir=/usr/local/zlib --with-t1lib=/usr/local/t1lib --with-iconv --enable-libxml --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl=/usr/local/curl --enable-ctype
 
备注:修改部分
 
 
取消原来的--with-curl
 
替换为:--with-curl=/usr/local/curl
 
取消参数两边的单引号
 
其它不变
 
cd /usr/local/src/php #进入php安装包目录(注意php版本要和之前一样)
 
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/tmp/mysql.sock --with-pdo-mysql=/usr/local/mysql --with-gd --with-png-dir=/usr/local/libpng --with-jpeg-dir=/usr/local/jpeg --with-freetype-dir=/usr/local/freetype --with-xpm-dir=/usr/ --with-zlib-dir=/usr/local/zlib --with-t1lib=/usr/local/t1lib --with-iconv --enable-libxml --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl=/usr/local/curl --enable-ctype   #配置
 
make #编译
 
make install #安装
 
4、重启apache使设置生效
 
service httpd restart #重启
 
故障解决!
 
5、测试
 
以下代码,保存为phpinfo.php
 
<?php
 
phpinfo();
 
?>
 
上传到网站目录,查找curl,如下图所示,说明安装成功!
 

至此,Linux下PHP安装curl扩展支持https教程完成!
 
扩展阅读:查看软件编译参数
 
查看nginx编译参数:/usr/local/nginx/sbin/nginx -V
 
查看apache编译参数:cat /usr/local/apache/build/config.nice
 
查看mysql编译参数:cat /usr/local/mysql/bin/mysqlbug | grep CONFIGURE_LINE
 
查看php编译参数:/usr/local/php/bin/php -i | grep configure

例子

代码如下: curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在
 

curl https请求代码

代码如下: <?php
/** curl 获取 https 请求
* @param String $url 请求的url
* @param Array $data 要?送的??
* @param Array $header 请求时发送的header
* @param int $timeout 超时时间,默认30s
*/
function curl_https($url, $data=array(), $header=array(), $timeout=30){
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);

$response = curl_exec($ch);

if($error=curl_error($ch)){
die($error);
}

curl_close($ch);

return $response;

}

// 调用
$url = 'https://www.example.com/api/message.php';
$data = array('name'=>'fdipzone');
$header = array();

$response = curl_https($url, $data, $header, 5);

echo $response;
?>
 更高级实用的代码

function curlPost($url, $data, $timeout = 30)
 {
     $ssl = substr($url, 0, 8) == "https://" ? TRUE : FALSE;
     $ch = curl_init();
     $opt = array(
             CURLOPT_URL     => $url,
             CURLOPT_POST    => 1,
             CURLOPT_HEADER  => 0,
             CURLOPT_POSTFIELDS      => (array)$data,
             CURLOPT_RETURNTRANSFER  => 1,
             CURLOPT_TIMEOUT         => $timeout,
             );
     if ($ssl)
     {
         $opt[CURLOPT_SSL_VERIFYHOST] = 1;
         $opt[CURLOPT_SSL_VERIFYPEER] = FALSE;
     }
     curl_setopt_array($ch, $opt);
     $data = curl_exec($ch);
     curl_close($ch);
     return $data;
 }
 $data = curlPost('https://www.111cn.net', array('p'=>'hello'));
 echo ($data);
 

时间: 2024-10-28 03:14:31

Linux下PHP安装curl扩展支持https例子的相关文章

Linux系统PHP安装curl扩展支持https教程详解

问题: 线上运行的lamp服务器,默认yum安装的curl模块只支持http,不支持https. 解决方法: 编译安装curl,重新编译php,使php的curl模块支持https. 具体步骤: 1.下载curl cd /usr/local/src  #进入安装包存放目录 wget http://curl.haxx.se/download/curl-7.44.0.tar.gz  #下载 2.安装curl cd /usr/local/src tar zxvf curl-7.44.0.tar.gz 

Linux下php安装Redis扩展的方法_服务器其它

本文实例讲述了Linux下php安装Redis扩展的方法.分享给大家供大家参考,具体如下: 注意:目录的权限   chomd 777 -R 1.安装redis 下载:https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gz 上传phpredis-2.2.4.tar.gz到/usr/local/src目录 cd /usr/local/src #进入软件包存放目录 tar zxvf phpredis-2.2.4.tar.gz #解压 cd

centos系统下php5安装curl扩展两种方法

php5.3 安装curl扩展  代码如下 复制代码 tar zxf 解压 ./configure --prefix=/usr/local/curl make make install 进入PHP的源码包,没有的话,重新下载php5.3.tar.gz解压即可.  代码如下 复制代码 cd ext/curl 运行一下phpize /usr/local/php5/bin/phpize 配置curl  代码如下 复制代码 ./configure --with-php-config=/usr/local

Linux下php安装imagick扩展教程

 php_imagick是一个可以供PHP调用ImageMagick功能的PHP扩展.使用这个扩展可以使PHP具备和ImageMagick相同的功能,现在我们来看看在Linux下php如何安装imagick.     说明: php安装目录:/usr/local/php5 php.ini配置文件路径:/usr/local/php5/etc/php.ini Nginx安装目录:/usr/local/nginx Nginx网站根目录:/usr/local/nginx/html 1.安装编译工具 yu

linux下如何安装php扩展pdo_mysql编译

linux下的php扩展与windows下的扩展安装有些不同.下面就拿在linux下扩展php的pdo,pdo_mysql模块来说明一下 1.在php的原码安装包里,进入到etc/pdo_mysql里.假设你的php是安装在/usr/local/php里的.执行/usr/local/php/bin/phpize 2. 进行编译../configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/loc

linux下php安装mongo扩展步骤教程

mongo db是个好东西,越来越多的项目中有使用到. 下面介绍如何安装mongo扩展 环境 nginx/1.4.4 PHP 5.4.22 MongoDB 2.4.10 下载扩展安装包 wget http://pecl.php.net/get/mongo-1.4.5.tgz 编译安装 tar xvf mongo-1.4.5.tgz -C /usr/src cd /usr/src/mongo-1.4.5/ phpize ./configure --with-php-config=/usr/loca

Linux下php安装Redis扩展

下载:https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gz tar zxvf phpredis-2.2.4.tar.gz #解压 cd phpredis-2.2.4 #进入安装目录 phpize ./configure  make  sudo make install 修改配置文件 sudo vim /etc/php5/fpm/php.ini sudo service nginx restart sudo /etc/init.d/p

window下如何安装curl扩展

  1.找到php.ini 修改extension=php_curl.dll 把前面的分号去掉 2.把 php_curl.dll libeay32.dll ssleay32.dll 复制到 %windir%/system32下 重启IIS就可以了

linux中php如何安装CURL扩展方法示例教程

  如果php已经在系统编译好,后来又需要添加新的扩展. 一种方式就是重新完全编译php,另一种方式就是单独编译扩展库,以extension的形式扩展. 下面以安装curl扩展为例: 1.下载curl安装包.(我的php是4.4.4的,下载最新的curl 7.16 不能使用,最后下载7.14的才可以,所以要注意一下版本问题) 代码如下: ./configure make php要求curl的目录要有include和lib目录,并且include下要有easy.h 和curl.h两个文件,lib下