1

ファイルが存在するかどうかを確認し、存在する場合は削除しようとしています。奇妙な理由で、ファイルをチェックするとtrueが返されますが、私の存続期間中はリンクが解除されません。これが私が持っているコードです。

if(file_exists(TEMPLATEPATH.'/uploads/'.$_POST['image_name'])) {
        if (@unlink(TEMPLATEPATH.'/uploads/'.$_POST['image_name'])) {
            echo "true";
        } else {
            echo "false";   
        }
    } else {
        echo "false";   
    }

*注---@なしではエラーはありません...*注2---これはローカルホストウィンドウにwampスタックがあり、それが機能しない理由であると言う前に、同じ構文を使用する別のサイトが機能することを確認しました特別な許可なしでそれら。

助けてくれてありがとう!

4

4 に答える 4

11

ファイルが存在する場合でも、それを削除する権限があるとは限りません。

潜在的なエラーを黙らせているoperatorを削除@する必要があります。これはおそらく非常に興味深いことです。


また、ユーザーにエラー メッセージを表示したくない場合は、次のようにする必要があります。

  • エラーメッセージの表示を非アクティブ化します。display_errors
  • そして、これらのエラーをファイルに記録します。自分の目で確認してくださいlog_errorserror_log
于 2011-04-08T16:05:07.123 に答える
4

わかりました私はばかで、投稿された変数名が変更され、「image_name」ではなく「image」である必要があることに気付きました....

時間を無駄にしてごめんなさい!

于 2011-04-08T17:58:23.763 に答える
0

@Rick: warning-suppressing を削除すると@、PHP はアクセス拒否エラー メッセージを返しますか? もしそうなら、それが問題です。試す

if (file_exists(TEMPLATEPATH . '/uploads/' . $_POST['image_name'])) {
   chmod(TEMPLATEPATH.'/uploads/'.$_POST['image_name']), 0755);

   if (unlink(TEMPLATEPATH . '/uploads/' . $_POST['image_name'])) {
        echo "true";
    } else {
        echo "false";   
    }
} else {
    echo "false";   
}
于 2011-04-08T16:07:57.480 に答える
0

他の人が言っているように、削除するには適切な権限が必要です。具体的には、書き込み権限が必要です。これを試して:

$filename = TEMPLATEPATH.'/uploads/'.$_POST['image_name'];
if(is_writable($filename)) {
  unlink($filename)
} else {
  // error handling. You can check which condition is failing here
}
于 2011-04-08T16:10:02.803 に答える