0

我正在尝试从我正在运行我的 php 脚本的同一台服务器获取文件,我是 cUrl 来获取它。

它不会下载文件并超时。我可以使用浏览器中的相同 url 获取文件。

如果 url 不是同一服务器,则 cUrl 能够获取文件。

我需要修改它们的任何设置以支持在同一服务器上使用 cUrl 下载文件吗?

在这里感谢您的帮助。

我的代码:

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_URL, $file_url);
    $content = curl_exec($ch);
    curl_close($ch);
4

3 回答 3

0

我找到的解决方法是:测试您是否在自己的服务器上,然后对同一脚本使用简单的包含:

    if (($ser = servername()) != $floc) {
       return(GetFileContent("$floc/$page.php"));
    } else { include "$page.php"; }
于 2013-11-12T15:41:36.933 回答
0

尝试使用 curl 的所有参数

function curl_download($Url){

// is cURL installed yet?
if (!function_exists('curl_init')){
    die('Sorry cURL is not installed!');
}

// create a new cURL resource handle
$ch = curl_init();

// Now set some options (most are optional)

// Set URL to download
curl_setopt($ch, CURLOPT_URL, $Url);

// Set a referer
//curl_setopt($ch, CURLOPT_REFERER, "http://www.example.org/yay.htm");

// User agent
curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");

// Include header in result? (0 = yes, 1 = no)
curl_setopt($ch, CURLOPT_HEADER, 0);

// Should cURL return or print out the data? (true = return, false = print)
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Timeout in seconds
curl_setopt($ch, CURLOPT_TIMEOUT, 10);

// Download the given URL, and return output
$output = curl_exec($ch);

// Close the cURL resource, and free system resources
curl_close($ch);

return $output;
}
于 2013-06-27T11:00:35.167 回答
0

在成功获取的文件上使用谷歌浏览器Copy as cURL(打开“开发工具”,“网络”选项卡,右键单击请求),粘贴到终端,然后执行。

如果一切都很好,并且您可以在终端通过 curl 获取文件,那么就有一些带有标题和/或请求参数的东西。如果不是,则更有可能是您的网络配置有问题。

另外,检查网络服务器日志,你甚至用你的脚本访问网络服务器吗?

您正在使用127.0.0.1或使用localhost完整的 TLD?浏览器是否通过代理连接到 Internet?

于 2013-06-27T13:18:43.317 回答