2

使用 curl 将图像下载到我的本地主机时出现错误。我已经确保权限很好并且目录存在。我不知道接下来要检查什么。这是我得到的错误

Warning: unlink(images/) [function.unlink]: Operation not permitted in /Applications/MAMP/htdocs/test/image/instapaper.php on line 47

这是我的代码:

 $saveto = 'images/';

if ( !file_exists($saveto) ) {
 mkdir ($saveto, 0777, true);
}

    $url = 'http://img.ffffound.com/static-data/assets/6/4dea2e91338b67cd926140acde1962403c3bf4c2_m.jpg';

echo getcwd() . "\n";

$ch = curl_init ($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$raw=curl_exec($ch);
curl_close ($ch);
if(file_exists($saveto) && is_writable($saveto)){
    unlink($saveto);
}
$fp = fopen($saveto,'x');


if(fwrite($fp, $raw)==false){
  echo 'no dice';
  return;
}
fclose($fp);

**解决了

下面是工作代码。它基本上看起来像我试图将图像保存为我指定的目录位置。这已被清除,我已经提供了一个图像名称来保存文件。在最终脚本中,图像名称将从 url 中获取。

    $url = 'http://img.ffffound.com/static-data/assets/6/4dea2e91338b67cd926140acde1962403c3bf4c2_m.jpg';
$saveto = 'images/';
$image_name = 'image.jpg';
$full_path = $saveto .  $image_name;

if ( !file_exists($saveto) ) {
 mkdir ($saveto, 0777, true);
}

$ch = curl_init ($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$raw=curl_exec($ch);
curl_close ($ch);
if(file_exists($full_path) && is_writable($full_path)){
    unlink($full_path);
}
$fp = fopen($full_path,'x');


if(fwrite($fp, $raw)==false){
  echo 'no dice';
  return;
}
fclose($fp);
4

3 回答 3

4

$saveto是一个目录 - 你不能unlink(),你必须rmdir()它。

于 2012-06-13T20:24:51.693 回答
0

警告是unlink,而不是 cURL。看起来您正在尝试对目录执行此操作,这是不允许的,并且根据文档,失败将产生警告。

您可以使用rmdir($dirname)删除目录,但除了适当的权限外,该目录必须为空才能正常工作。

于 2012-06-13T20:24:22.770 回答
0

对于初学者来说 unlink() 是删除文件, rmdir() 是删除目录。目录也必须为空。

当我看到这个警告时:“警告:unlink(images/)”看起来你正试图删除一个功能错误的文件夹。

于 2012-06-13T20:25:13.220 回答