unlink不适用于变量,但适用于精确路径


unlink does not work on variable but works on exact path

绝对路径与unlink()一起工作:

<?php
     unlink('images/filename.jpg');
?>

但这并不奏效。

<?php
    $image_id = $_POST['image_id'];
    unlink('images/'.$image_id)
?>

文件权限可以,脚本可以读取、写入和执行。尝试使用单引号和双引号,它适用于绝对文件路径,但不适用于从$_POST[]传递的变量。

这里有什么变通办法吗?非常感谢。

可能会稍微清理一下查询参数。不确定,但当我尝试使用多种变体的代码时,它非常完美!

根据你的说法,

unlink('images/filename.jpg');

正在完美地工作。然后,我看不出为什么其他代码不起作用。

做一些类似的事情:$image_id=修剪($_POST["image_id"]);

在删除文件之前,请检查文件是否存在,这样,你就会确定错误在哪里。

$image_url = "images/{$image_id}";
if(file_exists($image_url)){
    unlink($image_url);
} else {
    die('file does not exist');
}

尝试:

<?php
    $image_id = $_POST['image_id'];
    unlink('./images/'.$image_id)
?>

在目录名中的图像之前添加"./"。