我一直想弄清楚unlink
无效的原因。我已经尝试过stackoverflow以前的问题和答案,但没有运气。需要删除的确切文件名为'upload/test.png'
。
首先,我检查文件是否存在。
$filename = 'upload/test.png';
if(file_exists($filename)){
// file_exists returns true
if(is_writable($filename)){
// is_writable also returns true
if(unlink($filename)){
echo 'file deleted';
}
else{
echo 'cant delete file';
print_r(error_get_last());
// this gives me
// unlink() function.unlink: No such file or directory
}
}
}
答案 0 :(得分:4)
改为给出完整路径,例如
$filename = dirname(__FILE__) . '/upload/test.png';
然后试试这个,
if (is_file($filename)) {
chmod($filename, 0777);
if (unlink($filename)) {
echo 'File deleted';
} else {
echo 'Cannot remove that file';
}
} else {
echo 'File does not exist';
}
答案 1 :(得分:1)
如果您说一切正常且没有权限问题,那么您也可以尝试这种方式:
unlink(realpath("upload/test.png"));
答案 2 :(得分:0)
试试这个并发布你得到的输出(如果有的话)。
$filename = 'upload/test.png';
@unlink($filename);
if(is_file($filename)) {
echo "file was locked (or permissions error)";
}
答案 3 :(得分:0)
我发现取消链接对编码很敏感。我也遇到过此类问题,但后来我使用了:
$filename= iconv("UTF-8", "Windows-1251", $filename);
那对我有用。