Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 尝试删除图像时unlink()不起作用_Php_Unlink - Fatal编程技术网

Php 尝试删除图像时unlink()不起作用

Php 尝试删除图像时unlink()不起作用,php,unlink,Php,Unlink,我正在尝试使用unlink()函数从目录中删除图像 if (file_exists($oldPicture)) { unlink($oldPicture); echo 'Deleted old image'; } else { echo 'Image file does not exist'; } $oldPicture的值为。/images/50/56/picture.jpg 下面的代码块运行时没有任何错误,但是当我检查目录时,图像仍然存在 我做错什么了吗 谢谢 “

我正在尝试使用
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-是的,每个人都是对的,我被拒绝了许可……你知道我如何解决这个问题吗?顺便说一句,错误报告真是太棒了,这对我真的很有帮助,谢谢你!-大兔子”

在取消链接文件之前,对文件使用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


“如何使用var_dump()检查文件夹/文件权限?”

  • 不是检查权限,而是检查通过该变量传递的内容
即:
var_dump($oldPicture)


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

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

// rest of your code

像这样使用函数

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

在打开PHP标记后立即在文件顶部添加错误报告,例如
执行的PHP文件的绝对路径是什么。“images/50/56/picture.jpg”路径的绝对路径是什么?可能php没有删除该文件的权限。根据您的编辑:即使您对该文件夹设置了权限,也不意味着它对该文件有权限,所以检查一下,并使用错误报告,如我上面所说的,等等。顺便说一句,你已经得到了下面的答案。试试看that@Fred-是的,我要加入错误报告,看看它说什么,谢谢。如何使用
var\u dump()
检查文件夹/文件权限?两者都不起作用,我是否应该假设不是文件权限而是目录我把这个目录做成这样
mkdir($directoryPath)。我是否应该让它们像mkdir($directoryPath,0775)?当我删除此图像时,我还上传了另一个图像,我也被拒绝了权限(错误报告是天赐的)。@BigRabbit是,但chmod到755或777。所有文件夹和子文件夹都需要设置适当的权限。首先尝试使用chmod 755查找FTP程序中的文件夹/子文件夹,看看上面是怎么说的。作为“最后”手段,您可以将文件夹设置为777,但这并不安全<代码>mkdir($directoryPath)未设置文件夹的正确权限。现在,我了解了
chmod()
和mkdir()
更多信息,请参阅手册。当我创建新目录时,我现在正在做
mkdir($directoryPath,0775)
,当我上传任何图像时,我也会通过
chmod()
运行它们。完成此操作后,我能够成功地使用
unlink()
从新创建的目录中删除图像。此外,我将更经常地使用
var\u dump()
在调试任何问题时看到它的好处。我将确保在生产过程中删除任何错误报告。非常感谢弗莱德,我真的很感激所有这些,今天我学到了很多东西,游戏改变。@ BigRabbit欢迎你,很高兴有帮助,请考虑使用按钮,并添加一些解释你的答案,使它更有用。
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');