【问题标题】:unlink() doesn't work with absolute pathunlink() 不适用于绝对路径
【发布时间】:2017-10-17 19:05:29
【问题描述】:

我正在研究一种使用unlink() 删除图片的方法。但是我找不到使用绝对路径使其工作的方法。

这是我的代码:

$img = $_SERVER['DOCUMENT_ROOT'].'/i/koala.png';
unlink($img);

错误:

Warning: unlink(/var/www/html/i/koala.png): No such file or directory in /var/www/html/king/test.php on line 15

有什么帮助吗?

【问题讨论】:

  • 验证路径,可能是错误的
  • 当您登录终端并输入:ls /var/www/html/i/koala.png 时会发生什么?

标签: php unlink


【解决方案1】:

当您将各种字符串拼凑在一起形成路径时,您应该使用realpath 来验证它并转换任何相关片段,例如/../

http://php.net/manual/en/function.realpath.php

$path = $_SERVER['DOCUMENT_ROOT'].'/i/koala.png';
$img = realpath($path);

$img 要么是假的,要么是一个有效路径的字符串!

【讨论】:

  • 我的 $img 变量使用 realpath() 变为 NULL
  • 我将该行拆分为 2.die($path);,无论出现什么,转到终端并输入 ls /the/path/it/gave/you.php
  • ls: 无法访问'/var/www/html/..': 没有这样的文件或目录
  • 但是我可以用我的 FTP 访问这个完全相同的路径
  • FTP?那肯定是一个完全不同的文件夹吗?
【解决方案2】:

立即查看

$filename = '/var/www/html/i/koala.png';

if(file_exists($filename))
{
  chmod($filename, 777);
  unlink($filename);
  echo "file has deleted";
}
else
{
 echo "file not exists";
}

【讨论】:

  • 它返回“文件不存在”但是绝对路径正在工作
猜你喜欢
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-28
  • 1970-01-01
  • 2012-09-07
  • 1970-01-01
相关资源
最近更新 更多