从远程服务器下载文件并在完成下载后删除

时间:2014-01-28 05:52:47

标签: php linux

我尝试使用wget从远程服务器下载文件。我想在完成下载后删除远程服务器文件。

这是我的下载文件代码。

<?php
function remoteFileExists($url) {
    $curl = curl_init($url);

    curl_setopt($curl, CURLOPT_NOBODY, true);

    $result = curl_exec($curl);

    $ret = false;

    if ($result !== false) {
        $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);  

        if ($statusCode == 200) {
            $ret = true;   
        }
    }

    curl_close($curl);

    return $ret;
}


$exists = remoteFileExists('http://192.168.X.X/123/123.rar');
if ($exists) {

    shell_exec('wget  http://192.168.X.X/123/123.rar');
    echo"file downloaded";

} else {
    echo 'file does not exist';   

}

?>

但是这也会给出如下错误:

--2014-01-28 11:17:38--  http://192.168.X.X/123/123.rar
Connecting to 192.168.X.X:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 345 [text/plain]
123.rar: Permission denied

Cannot write to `123.rar' (Permission denied).

1 个答案:

答案 0 :(得分:1)

  • Cannot write to '123.rar' (Permission denied).表示您的PHP(以Apache用户身份运行的mod_php?)没有权限将文件写入本地服务器。您需要指定(或创建chmod 777)允许写入的目录。

我们假设您的Apache可以保存到/tmp

$local_dir = '/tmp';
shell_exec("wget -P $local_dir http://192.168.X.X/123/123.rar");
  • 删除远程文件需要权限和对远程服务器的访问权限。根据您的设置存在多个选项:ssh remote-server "rm /path/to/123/123.rar"如果您有ssh访问权限(但那么您首先只需scp该文件,不是吗?)。