以下是代码:
/*
* Example to fetch the example.com homepage into a file
*/
$curlObject = curl_init("http://AAA.BBB.CCC.DDD/");//AAA.BBB.CCC.DDD is the IP address of the remote server.
$file = fopen("example_homepage.txt", "w");
curl_setopt($curlObject, CURLOPT_FILE, $file);
curl_setopt($curlObject, CURLOPT_HEADER, 0);
curl_exec($curlObject);
curl_close($curlObject);
fclose($file);
它基于示例here。我正在学习基本的cURL用法。预期的输出是位于我的远程计算机(其IP为index.php
)中安装的XAMPP服务器的index.html
目录中的htdocs
或AAA.BBB.CCC.DDD
的内容应该是执行此PHP脚本后,将其复制到example_homepage.txt文件中。
现在创建了example_homepage.txt
文件,但它是EMPTY。位于index.php
的主页(index.html
或htdocs
)的内容安装在远程计算机中的XAMPP服务器的目录不会复制到新创建的example_homepage.txt
。
问题是为什么以及如何解决此问题?
答案 0 :(得分:1)
curl选项CURLOPT_FILE对我来说从来没有真正起作用,也许是错误的。不要使用它,还有其他方法。
为了接收正文内容,请将选项CURLOPT_RETURNTRANSFER设为curl_setopt($curlObject, CURLOPT_RETURNTRANSFER, true);
,否则您什么也得不到。
这对我来说非常有效(如果文件不存在,file_put_contents()会创建该文件。)
<?php
$curlObject = curl_init("http://example.com/");
curl_setopt($curlObject, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curlObject);
curl_close($curlObject);
file_put_contents('example_homepage.txt', $result);
我尝试了google.de,这是example_homepage.txt的内容:
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.de/">here</A>.
</BODY></HTML>
使用例如http://www.google.de/它会按预期工作。