【问题标题】:unlink does not work on variable but works on exact pathunlink 不适用于变量,但适用于确切路径
【发布时间】:2013-07-14 04:49:12
【问题描述】:

绝对路径与 unlink() 一起使用:

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

但这不起作用。

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

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

这里有什么解决方法吗?谢谢。

【问题讨论】:

  • 您确定您在$_POST['image_id'] 中获得了正确的值吗?做一个print_r() 看看。
  • 谢谢!但没有打印任何内容。
  • 我相信 Rainulf 在 $image_id = $_POST['image_id'] 之后的意思是 print_r($image_id)。这是你做的吗?
  • 将再试一次。谢谢!
  • 是的,它会打印带有扩展名的文件名。

标签: php variables post unlink


【解决方案1】:

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

根据你的说法,

unlink('images/filename.jpg');

运行良好。然后,我看不出其他代码不工作的原因。

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

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

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

【讨论】:

  • 好像有些空格给你带来了麻烦。
  • 我正在尝试支持您的答案,但我没有足够的声誉来这样做。感谢 Rainulf、vinodadhikary,尤其是 CooSHal。
  • 不用担心。它帮助了你,这就足够了:D
  • 遇到了同样的问题,我需要的是修剪 - 谢谢 :)
【解决方案2】:

试试:

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

在目录名称中的图像前添加“./”。

【讨论】:

  • 没有./也一样;它都是当前目录。
  • 顺便说一下,该网站托管在 linux 服务器上。
猜你喜欢
  • 1970-01-01
  • 2018-12-18
  • 2013-12-06
  • 2019-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多