2010-04-16 62 views
0

我在特定文件夹下创建一个名为1.png的临时图像,一旦我读取了image_contents和进程,我使用unlink()从该文件夹中删除该特定图像。在php中取消链接()的问题!

但是有时图像文件没有被删除,并且相同的图像是文件被读取和处理。

该脚本工作,否则罚款...

没有权限相关的问题,因为文件有时会被删除...

会不会有什么问题,当脚本被反复调用和图像的名称已经存在,并没有删除等。

请建议我会是什么问题

 extension_loaded('ffmpeg'); 
     $max_width = 120; 
     $max_height = 72; 
     $path ="/home/fff99/public_html/temp/"; 
      ..... 
      ..... 
     $nname = "/home/friend99/public_html/temp/".$imgname; 
     $fileo = fopen($nname,"rb"); 
     if($fileo) 
     { 
      $imgData = addslashes(file_get_contents($nname)); 
        .... 
        ... 
        .. 
     } 
     unlink('$nname'); 

回答

1

您应该unlink检查返回值,看看它返回false。最有可能的问题是一个打开的文件句柄,防止完成取消链接;您的fopen应该有一个相应的FCLOSE:

fclose($fileo); 
if(!unlink($nname)) 
    echo "AAAAH!"; 
+0

那很好。我应该看看添加一个fclose()。我有一个疑问。我的脚本将会在用户在我的网站上进行每次上传时被调用。所以这将是一个麻烦创建一个文件总是命名为'1.png',如果是这样,然后如何处理这个.. – Vijay 2010-04-16 06:25:16

1

我不得不使用@unlink它会挑选时要删除一个类似的问题,所以我换到这一点;

if (file_exists($filename)) { 
unlink($filename); 
} 

由于某种原因,为我工作,希望它有帮助。

+1

这似乎不会有助于取消链接留下一个文件,它只是防止尝试取消链接一个不存在的文件 – 2010-04-16 06:26:56

+0

好吧,我刚刚要回复'但没有出现fclose会导致许可错误',他说他没有看到, unlink('$ nname'); 不应该在单引号中。然后他会有一个错误,现在这一切都是有道理的。 – Jamie 2010-04-16 07:08:20