php curl的几种用法

php curl的几种用法,第1张

总结一下项目中用到curl的几种方式

1. php curl的默认调用方法,get方式访问url

$ch = curl_init()

curl_setopt($ch, CURLOPT_HTTPHEADER, $header) //设置http头

curl_setopt($ch, CURLOPT_ENCODING, gzip )//设置为客户端支持gzip压缩

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30 ) //设置连接等待时间

curl_setopt($ch, CURLOPT_URL, $url )

curl_exec( $ch )

if ($error = curl_error($ch) ) {//出错处理return -1}fclose($fp)

$curl_code = curl_getinfo($ch, CURLINFO_HTTP_CODE) //获取http返回值

if( $curl_code == 200 ) {

//正常访问url}//异常

2. 设置http header支持curl访问lighttpd服务器Java代码$header[]= 'Expect:'

$header[]= 'Expect:'

3. 设置curl,只获取http header,不获取body:Java代码curl_setopt($ch, CURLOPT_HEADER, 1)

curl_setopt($ch, CURLOPT_NOBODY, 1)

curl_setopt($ch, CURLOPT_HEADER, 1)

curl_setopt($ch, CURLOPT_NOBODY, 1)

或者只获取body:Java代码curl_setopt($ch, CURLOPT_HEADER, 0) // make sure we get the body

curl_setopt($ch, CURLOPT_NOBODY, 0)

curl_setopt($ch, CURLOPT_HEADER, 0) // make sure we get the body

curl_setopt($ch, CURLOPT_NOBODY, 0)

4. 访问虚拟主机,需设置Host

$header[]= 'Host: '.$host

5. 使用post, put, delete等REStful方式访问urlpost:curl_setopt($ch, CURLOPT_POST, 1 )

put, delete:

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, DELETE) //或者PUT,需要服务器支持这些方法。

6. 保存下载内容为文件

一、原因分析

web站点目前主要分为http和https两种协议,其中https类型的网站都是通过ssl协议+http协议的,是目前最安全的网站协议,访问此类网站的时候,会走ssl协议,验证访问者的证书,检测是否安全。

通过curl访问此类网站也是如此流程,但是curl中需要添加相应的参数,绕过ssl证书的验证,才可以正常访问,如出现此错误的一般原因是没有加此参数。

CURLOPT_SSL_VERIFYHOST的值

设为0表示不检查证书

设为1表示检查证书中是否有CN(common name)字段

设为2表示在1的基础上校验当前的域名是否与CN匹配。

二、解决方案

如果出现:

PHP Notice: curl_setopt():

CURLOPT_SSL_VERIFYHOST with value 1 is deprecated and will be removed as of libcurl 7.28.1. It is recommended to use value 2 instead in

一般原因是你设置了 curl_setopt ( $curl_handle, CURLOPT_SSL_VERIFYHOST, true )

改成curl_setopt ( $curl_handle, CURLOPT_SSL_VERIFYHOST, 2 )就行了。

扩展资料

PHP其他原因错误:

1、错误现象

在用curl进行模拟调用时,curl接收内容会出现"Empty reply from server" 和 "Recv failure: Connection was reset"的错误。

2、解决方案

经过对apache的error_log进行跟踪,出现错误"Connection reset by peer: core_output_filter: writing data to the network"

修改httpd.conf,在虚拟主机上添加如下内容:

EnableSendfile off

EnableMMAP off

修改后"Empty reply from server"错误消失。

反向绑定域名最初应该是应用在站点负载均衡和域名内网转发上,利用反向绑定域名的 方法 可以将用户的不同请求分发到不同的服务器上,下面是我给大家整理的一些有关反向绑定域名的方法,希望对大家有帮助!

反向绑定域名的方法

一、利用虚拟主机空间作反向绑定域名

1、先找到一个支持自定义.htaccess,apache服务器,允许有反向代(^_^)理的权限的免费空间或者虚拟主机,将空间的.htaccess文件下载到本地,用记事本打开,将下列代码添加进去,再上传,如下:RewriteEngine On RewriteBase / RewriteRule ^(.*)$ hp://域名/$1 [P]

2、注意把代码中的网址替换成你想要反向绑定域名的域名,这里是强制将域名绑定到SAE空间上,用了SAE的二级域名地址

3、如果你找不到支持.htaccess的URL地址重写的虚拟主机或者空间,可以直接使用7ghost这个PHP程序,只要空间支持allow_furl_open和curl、容量至少要有500K即可。如果启用缓存的话需要 写权限和空间足够大。

4这是7ghost程序设置界面(点击放大),利用它你可以反向Dai理任何网站,详细的操作方法

二、利用Nginx反向绑定域名

1如果你有VPS主机,那么可以用Nginx的反向配置来搭建一个反向绑定域名的平台了,Nginx强大之处还在于还可以变成一个缓存平台,大大加快你反向Dai理的网站的访问速度。

2因为国内的空间不让绑定没有BA的域名,部落之前利用Nginx反向绑定域名到国内的空间上

三、利用kangle web搭建反向绑定域名服务器

1kangle web服务器是一款跨平台、功能强大、安全稳定、易操作的高性能web服务器和反向Dai理服务器软件,能实现强大的访问请求控制(url,ip地址,连接数/网速限制,hp头,时间控制,多种hp认证,#服务器负载,url重定向,url重写,内容过滤等等)。

2与上面的采用Nginx反向配置来搭建反向绑定域名不同的是,kangle web有良好的Web操作界面,通过搭建不同的配置可以实现复杂的反向域名

四、利用AMH和upupw来反向绑定域名

1AMH是国内一个开源的主机面板,可以创建 LNMP、LAMP、LNMH 等不同WEB应用环境,新版本的AMH还支持apache2.4和HHVM。AMH相应的功能模块也非常地多,其中AMProxy就是一个反向绑定域名模块。

AMProxy的2.0版本支持缓存管理功能,支持在线关键字添加、替换,支持设置不同类型文件替换、与支持添加自定义首尾html代码块等。利用CDN智能解析功能,将不同路线、地理位置的用户解析到相应服务器,对用户访问进行缓存加速,同时减轻源站的服务器压力

利用AMH反向绑定域名并成功绕过白**名单的方法,首先是要求:一个有BA号的域名、一个没有BA号的域名、一台可以访问的境外主机,美国的VPS主机就可以。

使用 root 账号登录 Linux 服务器。执行 amh 安装脚本:wget hp://amh.sh/amh.sh &&bash amh.sh 2>&1 | tee amh.log,根据提示输入选择1~3选项。输入1回车,进入安装

极速安装方式大约只需要1至3分钟(以服务器性能为准),成功安装后系统会提示AMH与MySQL默认账号密码。可使用普通连接访问面板,ip:8888,或加密的连接访问面板,ip:9999

登陆后台找到 模块扩展 >下载模块,大约在第3页找到 AMProxy-2.0 下载并安装。在管理模块中找到并进入设置界面,可以看到新增AMProxy反向代理网站一栏。绑定域名:输入没有BA号的域名(IP),反代域名:输入有BA号的域名(IP)

用上面的方法,默认是反代到国内主机的80端口上,可是有些主机反代到80端口后还是无法访问,下面说一下如何使用其他端口建站。这里以没有BA号的域名 bukets.net和有BA号的域名 demo.vsen.me来作演示,环境是upupw+amh。

先在国内的云主机上安装upupw,然后新建虚拟主机域名输入为 demo.vsen.me,目录自设。打开upupw目录进入 Apache2\conf,找到hpd-vhosts.conf并打开(注意不要使用系统的 笔记本 或文本文档打开,我用的是Notepad++)

找到刚刚新建的虚拟主机规则,并将 servername demo.vsen.me:80 改为 servername demo.vsen.me:8000,保存并关闭。继续打开目录下的hp.conf文件,在最下方 # upupw apache conf end 前增加如下代码,保存并关闭。

# 新增监听端口Include conf/hpd-listen.conf

在 Apache2\conf 目录下新建 hpd-listen.conf 文件,在里面写入 Listen 8000,保存并关闭。打开系统防火墙(控制面板中),选择 例外 选项卡,点击下方的 添加端口 按钮,名称自起,端 口号 写入8000,确定。回到upupw面板,重启

没有意外的话,访问bukets.net就可以成功打开网站了。上面只做了一个网站的例子,如果以后有多个网站,那就需要重复以上步骤了

END


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/790860.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-25
下一篇2023-08-25

发表评论

登录后才能评论

评论列表(0条)

    保存