【问题标题】:CURL CURLOPT_URL is causing php script to run twiceCURL CURLOPT_URL 导致 php 脚本运行两次
【发布时间】:2011-10-24 17:25:57
【问题描述】:

我有一个如下所示的 curl 脚本:

<?php

echo "hello";

$download_file = "http://www.myremotesite.com/api/download.php?autoupdate=1";

$temp_file = tempnam('/tmp','TEMP');

$ch2 = curl_init();

curl_setopt($ch2, CURLOPT_URL,            $download_file);
curl_setopt($ch2, CURLOPT_HEADER,         FALSE);
curl_setopt($ch2, CURLOPT_FAILONERROR,    FALSE);
curl_setopt($ch2, CURLOPT_BINARYTRANSFER, TRUE);
curl_setopt($ch2, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch2, CURLOPT_TIMEOUT,        10000); 

$file = curl_exec($ch2);
curl_close($ch2);

$fp = fopen($temp_file, 'w');
fwrite($fp, $file);
fclose($fp);

?>

问题是执行后页面上的输出是这样的:

hellohello

根据我的测试,我已将其范围缩小到 $download_file URL。如果我将其更改为 http://www.google.com,则没有问题。

知道是什么导致了这种双重输出吗?对于不同的 URL,在其他情况下也会发生这种情况。我真的认为这是基于服务器的东西,因为同样的设置在其他主机上也能正常工作。

服务器信息 Linux x-mirrors.com 2.6.26-2-openvz-amd64 #1 SMP 2011 年 1 月 25 日星期二 06:04:33 UTC x86_64 PHP 版本 5.2.6-1+lenny10 启用快速 CGI

【问题讨论】:

  • 我觉得我们在这里缺少代码。 $ch1在哪里?
  • 该脚本中的任何内容都不会导致它运行两次,除非它被请求两次。
  • @ceejayoz 当我看到问题是否可以缩小到在一个脚本中运行的两个 CURL 请求时,它就在那里......你只知道理论测试。 $ch2 是在我弄清楚是什么导致它打印 hello 两次时剩下的。嘿,马克,我同意。尽管如此....
  • 你是如何执行脚本的?
  • 嘿 Phill,目前,上面的这个脚本是我在浏览器中运行的 test.php 的代码。

标签: php curl


【解决方案1】:

我有同样的问题。这可能是因为 .htaccess 文件。如果你使用

   RewriteEngine On  
   RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 

。在没有他们的情况下检查它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    相关资源
    最近更新 更多