1

我正在尝试从服务器中删除文件。

我的应用程序的文件位于文件夹名称“/public_html/app/”中;

与应用程序关联的所有图像都位于以下路径中:“/public_html/app/images/tryimg/”

我正在编写以下代码规范的文件位于“/public_html/app/”中。

这是我的代码片段:

<?php

$m_img = "try.jpg"

$m_img_path = "images/tryimg".$m_img;

if (file_exists($m_img_path))
{
     unlink($m_img_path);
}
// See if it exists again to be sure it was removed
if (file_exists($m_img))
{
          echo "Problem deleting " . $m_img_path;
}
else
{
        echo "Successfully deleted " . $m_img_path;
}
?>

执行上述脚本时,将显示消息“已成功删除 try.jpg”。

但是当我导航到该文件夹​​时,该文件不会被删除。

阿帕奇:2.2.17 PHP 版本:5.3.5

我究竟做错了什么?

我必须提供图像的相对或绝对路径吗?

4

2 回答 2

1

您缺少目录分隔符:

$m_img = "try.jpg"

$m_img_path = "images/tryimg".$m_img;

// You end up with this..
$m_img_path == 'images/tryimgtry.jpg';

您需要添加一个斜杠:

$m_img_path = "images/tryimg". DIRECTORY_SEPARATOR . $m_img;

您还需要更改第二个 file_exists 调用,因为您使用的是图像名称而不是路径:

if (file_exists($m_img_path)) 
于 2013-02-22T10:13:33.610 回答
1

您检查了错误的路径:

if (file_exists($m_img)) 

当您(试图) delete(d)$m_img_path时,请将您的支票替换为

if (file_exists($m_img_path))

unlink()返回一个布尔值以指示删除是否成功,因此使用此值更容易/更好:

if (file_exists($m_img_path)) 
{
    if(unlink($m_img_path))
    {
        echo "Successfully deleted " . $m_img_path;
    } 
    else 
    {
        echo "Problem deleting " . $m_img_path;
    }
}

此外,当前目录位于执行脚本的位置,因此在使用相对路径时需要牢记这一点。在大多数情况下,如果可能的话,使用绝对路径可能会更好/更容易。

如果您需要服务器上许多文件的路径,您可能希望将绝对路径放在变量中并使用它,因此如果您的服务器配置发生更改,则可以轻松更改绝对位置。

于 2013-02-22T10:05:18.557 回答