我尝试使用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).
答案 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
该文件,不是吗?)。