PHP编程语言标准库支持名为 libcurl
. libcurl是cURL工具的一个库实现,用于使用流行的协议(如HTTP、FTP等)与服务器和客户机通信。cURL可用于HTTP POST、HTTP PUT、FTP Upload请求。
PHP cURL库
对于大多数Linux发行版,默认情况下通常不安装PHP cURL库。在Windows中,包括PHP cURL在内的所有库都随PHP一起安装。所以我们不需要为Windows操作系统安装额外的库。我们可以为基于deb的发行版安装PHP cURL库,如Ubuntu、Debian、Mint和Kali,如下所示。
$ sudo apt install php-curl

PHP cURL使用步骤
为了在PHP中使用cURL,我们必须遵循以下初始化、配置、执行和关闭cURL会话所需的步骤。当然,我们将为这些函数提供一些参数和参数,以便设置cURL行为。
curl_init(); // initializes a cURL sessioncurl_setopt(); // changes the cURL session behavior with optionscurl_exec(); // executes the started cURL sessioncurl_close(); // closes the cURL session and deletes the variable made by curl_init();
初始化cURL会话
第一个是使用或创建PHP cURL会话是使用 curl_init()
用于初始化cURL会话的函数。curl_init()函数可以在没有参数的情况下调用,也可以使用URL参数来设置我们可以使用和通信的远程URL。
//Only create a cURL session and set to $ch variable$ch = curl_init();//Create a sessions variable named $ch //and initialize it for the "http://www.poftut.com" URL$ch = curl_init("http://www.poftut.com/");
设置卷曲选项
设置cURL选项不是强制性的,如果未设置任何选项,则将使用默认选项配置。为了设置cURL sessions选项,我们将提供已经初始化的cURL session变量和要设置的选项。有很多选择。我们可以通过执行 curl_setopt()
功能。
curl_setopt(SESSION_VARIABLE, OPTION, OPTION_VALUE);
- `SESSIONu VARIABLE`是初始化为PHP cURL会话的变量。
- `OPTION`是我们想要设置或更改的选项。
- `OPTIONu VALUE`是指定选项的值。
$ch = curl_init();//Set URL as "http://www.poftut.com"curl_setopt($ch, CURLOPT_URL, "http://www.poftut.com/");//Set HTTP Header curl_setopt($ch, CURLOPT_HEADER, Array("Content-Type: text/xml"));//Return Page Contentscurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
执行cURL请求
第三步是执行cURL请求或与 curl_exec()
函数,其中我们将提供cURL session变量作为参数。
$ch = curl_init(); //Set URL as "http://www.poftut.com"curl_setopt($ch, CURLOPT_URL, "http://www.poftut.com/");//Execute curl with given optionscurl_exec($ch);
关闭cURL会话
PHP cURL请求的最后一步是关闭会话并释放资源。 curl_close()
用于关闭和释放所有资源,如内存、网络等。
//Initialize cURL session$ch = curl_init(); //Set URL as "http://www.poftut.com"curl_setopt($ch, CURLOPT_URL, "http://www.poftut.com/"); //Execute curl with given options curl_exec($ch);//Close the cURL sessioncurl_close($ch);
使用cURL获取URL
现在我们已经了解了PHP cURL的基本用法。我们将开始研究不同类型的例子。首先,我们将向google.com发出一个httpget请求,并将请求响应打印到标准输出或命令行。
$ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');curl_exec($ch);curl_close($ch);

将页面内容返回到变量
或者,我们可以将cURL请求返回的响应放入一个变量中。我们将使用 CURLOPT_RETURNTRANSFER
选项,并将此选项值设置为1。
$ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$contents = curl_exec($ch);echo $contents;

设置用户代理HTTP头
我们还可以使用 CURLOPT_HEADER
选项与 "User-Agent: PofWeb"
价值观。在本例中,用户代理或浏览器名称表示为 PofWeb
.
$ch = curl_init(); //Set URL as "http://www.poftut.com" curl_setopt($ch, CURLOPT_URL, "http://www.poftut.com/"); //Set HTTP Header curl_setopt($ch, CURLOPT_HEADER, Array("User-Agent: PofWeb")); //Return Page Contents curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//Close cURL sessioncurl_close($ch);
遵循重定向
重定向用于将用户从请求的URL重定向到另一个URL。如果当前URL不提供历史资源,则重定向非常有用。我们还可以使用 CURLOPT_FOLLOWLOCATION
选项与 true
.
// Follow redirects, if anycurl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
如果响应为400、404,则返回Fail cURL
HTTP协议提供返回或HTTP状态代码以表示请求状态。像4XX、400、404这样的代码被用来表示关于请求处理的不同错误。如果当前的PHP cURL请求返回一个错误状态代码,我们可以使cURL失败并返回一些错误代码。我们将使用 CURLOPT_FAILONERROR
选项。
// Fail the cURL request if response code = 400 (like 404 errors) curl_setopt($curl, CURLOPT_FAILONERROR, true);
等待指定的连接时间
当连接到远程服务器时,可能会有一些延迟,这可能与internet速度、服务器速度等有关。我们可以设置一些超时,以防止无限期等待。我们将使用 CURLOPT_TIMEOUT
选项并提供超时秒数,在本例中为10。10秒后,连接请求将停止。
// Execute the cURL request for a maximum of 50 secondscurl_setopt($curl, CURLOPT_TIMEOUT, 10);
跳过SSL证书检查
今天的HTTP连接使用TCL/SSL证书是非常安全的。TLS/SSL证书用于加密连接,并由证书颁发机构批准供不同的方使用。PHP cURL的默认行为是在远程TLS/SSL证书无效时停止请求。即使远程HTTP服务器TLS/SSL证书无效,我们也可以防止这种情况并继续。我们就开始吧 CURLOPT_SSL_VERIFYHOST
和 CURLOPT_SSL_VERIFYPEER
选项 false
.
// Do not check the SSL certificatescurl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
相关文章: 如何更新Mozilla Firefox?