从浏览器调用PHP cURL下载时不起作用
我想要一个php脚本,我可以从浏览器访问,该脚本将下载文件到我的远程服务器,而不是我的计算机。 这是我从浏览器中调用的完整代码,名为localhost/download.php,但在network manager中不起作用。我看到有东西正在下载,但在project文件夹中找不到:从浏览器调用PHP cURL下载时不起作用,php,web-applications,Php,Web Applications,我想要一个php脚本,我可以从浏览器访问,该脚本将下载文件到我的远程服务器,而不是我的计算机。 这是我从浏览器中调用的完整代码,名为localhost/download.php,但在network manager中不起作用。我看到有东西正在下载,但在project文件夹中找不到: <? function download($url, $referer, $name) { $path = $name.'.mp3'; $fp = fopen(
<?
function download($url, $referer, $name)
{
$path = $name.'.mp3';
$fp = fopen($path, 'w');
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:13.5) Gecko/20100101 Firefox/13.4.9\r\n',
"Referer: $referer"
));
$data = curl_exec($ch);
curl_close($ch);
fwrite($fp, $data);
fclose($fp);
}
echo 'Please wait it is downloading...<br/>';
/*$url = $_GET['url'];
$referer = $_GET['referer'];
$name = $_GET['name'];*/
$url = "http://stream.get-tune.net/file/91259796/101538464/3652118538/ee58ddeb905ffa12/Palwan_Halmyradow_-_Sensiz_(get-tune.net).mp3";
$referer = "http://get-tune.net/?a=music&q=palwan+halmyradow";
$name = "Palwan Halmyradow - Sensiz";
download($url, $referer, $name);
?>
有什么问题
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
这种差异可能是由于cli php和apache php的配置不同造成的
完整代码:
function download($url, $referer, $name)
{
$path = $name.'.mp3';
$fp = fopen($path, 'w');
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:13.5) Gecko/20100101 Firefox/13.4.9\r\n',
"Referer: $referer"
));
$data = curl_exec($ch);
curl_close($ch);
fwrite($fp, $data);
fclose($fp);
}
你在哪里写入文件?@vaneto我想把文件下载到我的服务器上。出于记忆的原因,我直接写了这篇文章@inkytales不会思考so@torayeff如果设置此选项,响应的内容将存储在代码中的$data中。您需要运行file_put_contents'path/to/file',$data;至少可以这样说:不懒惰。但它确实不起作用。我用我使用的完整代码编辑了我的问题;我们不需要curl_setopt$ch,CURLOPT_RETURNTRANSFER,true;所以好吧,我的错。我错过了,请添加var_dumpcurl_getinfo$ch;在你关门之前。最有可能的是,apache用户并没有写入文件的权限,所以还要检查fopen是否返回0.5。我只想回答我自己的问题:。文件权限的问题。浏览器无法在/var/www/中写入文件。
function download($url, $referer, $name)
{
$path = $name.'.mp3';
$fp = fopen($path, 'w');
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:13.5) Gecko/20100101 Firefox/13.4.9\r\n',
"Referer: $referer"
));
$data = curl_exec($ch);
curl_close($ch);
fwrite($fp, $data);
fclose($fp);
}