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;
}
?>

上記のスクリプトを実行すると、「Successfullydeletedtry.jpg」というメッセージが表示されます。

しかし、フォルダに移動しても、ファイルは削除されません。

Apache:2.2.17 PHPバージョン:5.3.5

私は何が間違っているのですか?

画像への相対パスまたは絶対パスを指定する必要がありますか?

4

2 に答える 2

1

間違ったパスをチェックします:

if (file_exists($m_img)) 

(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 に答える
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;

パスではなく画像名を使用しているため、2番目のfile_exists呼び出しも変更する必要があります。

if (file_exists($m_img_path)) 
于 2013-02-22T10:13:33.610 に答える