当我尝试删除图像时 unlink() 不起作用 PHP

unlink() not working while I try to remove an image PHP

我正在尝试使用 unlink() 函数从目录中删除图像。

if (file_exists($oldPicture)) {
    unlink($oldPicture);
    echo 'Deleted old image';
} 
else {
    echo 'Image file does not exist';
}

$oldPicture 的值为 ../images/50/56/picture.jpg

下面的代码块运行没有任何错误,但是当我检查目录时图像仍然存在。

我是不是做错了什么?

谢谢

"@Fred-ii- Yeah everyone is right, I am getting denied permission...any idea how I can fix this? P.S. that error reporting is amazing, it will really help me thanks for that! – BigRabbit"

在取消链接之前对文件使用 chmod:

if (file_exists($oldPicture)) {

// last resort setting
// chmod($oldPicture, 0777);
chmod($oldPicture, 0644);
    unlink($oldPicture);
    echo 'Deleted old image';
} 
else {
    echo 'Image file does not exist';
}

不得已的设置是使用 0777,如注释代码中所示。


"How would I use var_dump() to check folder/file permissions?"

  • 这不是检查权限,而是检查通过该变量传递的内容。

即:var_dump($oldPicture);

if (file_exists($oldPicture)) {

var_dump($oldPicture);

// last resort setting
// chmod($oldPicture, 0777);
chmod($oldPicture, 0644);
    unlink($oldPicture);
    echo 'Deleted old image';
} 
else {
    echo 'Image file does not exist';
}

error reporting 添加到您的文件的顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:错误报告只能在试运行中进行,绝不能在生产中进行。

function deleteDrFiles($path) {
    if (is_dir($path)) {
        array_map(function($value) {
            $this->deleteDrFiles($value);
            rmdir($value);
        },glob($path . '/*', GLOB_ONLYDIR));
        array_map('unlink', glob($path."/*"));
    }
}

像这样使用函数

deleteDrFiles('../../uploads/img');