【问题标题】:PHP Curl to get a download filesizePHP Curl 获取下载文件大小
【发布时间】:2012-06-15 01:33:31
【问题描述】:

我在两个不同的服务器上使用这个脚本:

function curlGetFileInfo($url, $cookies="default"){
global $_config;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, 'serverpath/cookies/'.$cookies.'.txt');
$data = curl_exec($ch);
curl_close($ch); 
if ($data === false) { 
    return 0;
}
//echo $data;   
$info['filename'] = get_between($data, 'filename="', '"');
$info['extension'] = end(explode(".",$info['filename']));
if (preg_match('/Content-Length: (\d+)/', $data, $matches)) {
  $info['filesize'] = (int)$matches[1];
}
return $info;
}

这些服务器具有相同的 PHP 版本和相同的 PHP-Curl 版本。这是 curl 结果的两个不同标题:

工作一:

HTTP/1.1 302 发现日期:2012 年 6 月 12 日星期二 07:04:35 GMT 服务器: Apache/2.2.16 (Debian) X-Powered-By: PHP/5.3.3-7+squeeze13 过期时间: 1981 年 11 月 19 日星期四 08:52:00 GMT 缓存控制:无存储, no-cache,must-revalidate, post-check=0, pre-check=0 Pragma: no-cache 地点: http://stor1076.uploaded.to/dl/b3411ded-0f45-4efc-b705-8c8ac89b5e41 变化:接受编码连接:关闭内容类型:文本/html HTTP/1.1 200 OK 服务器:nginx/1.0.5 日期:2012 年 6 月 12 日星期二 07:04:35 GMT 内容类型:video/x-msvideo 内容长度:733919232 最后修改时间:2012 年 5 月 29 日星期二 15:10:07 GMT 连接:保持活动 内容处置:附件; filename="Saw.[Spanish.DVDRip].[XviD-Mp3].by.SDG.avi" 接受范围: 字节

不工作的人:

HTTP/1.1 302 发现日期:2012 年 6 月 12 日星期二 07:05:26 GMT 服务器: Apache/2.2.16 (Debian) X-Powered-By: PHP/5.3.3-7+squeeze13 过期时间: 1981 年 11 月 19 日星期四 08:52:00 GMT 缓存控制:无存储,无缓存, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Location: http://stor1164.uploaded.to/dl/22c3d242-365d-4e1e-b903-f1e2b81812c2 变化:接受编码连接:关闭内容类型:文本/html

Cookie 设置正常(需要登录),其他简单的 Curl 功能也正常工作。

另外,我做了一个curl_getinfo($ch, CURLINFO_HTTP_CODE) 并给了我这个结果:

工作人员: 200

不工作的人: 302

有什么想法吗?

【问题讨论】:

  • 好的,这是一个 open_basedir 问题。谢谢大家。

标签: php cookies curl filesize


【解决方案1】:

在工作中,您似乎正在运行 Apache 以及 nginx。你可以看到有两个 HTTP 响应:

HTTP/1.1 302 发现日期:2012 年 6 月 12 日星期二 07:04:35 GMT 服务器: Apache/2.2.16 (Debian) HTTP/1.1 200 OK 服务器:nginx/1.0.5

因此,您的设置有所不同。我不知道它们究竟是如何一起运行的,但这提供了一些见解并可能帮助您解决它:http://kbeezie.com/view/apache-with-nginx/

【讨论】:

  • 它们不是“一起运行”,第一个请求只是重定向。
  • 好的,这是一个 open_basedir 问题。无论如何,谢谢伙计!
  • 我的意思是在服务器配置方面“一起运行”。但无论如何,问题是另一回事。
【解决方案2】:

好的,这是一个 open_basedir 问题。谢谢大家。

【讨论】:

    猜你喜欢
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多