14

私はサイトを作成し、ファイルをアップロードするこの機能があり、そのファイルはサーバーにアップロードされます

phpの初心者ですが、xamppをダウンロードして、ローカルマシンで作成したこのサイトを実行しています。私のサイトは、ファイルをアップロードするとそのファイルがサーバーにアップロードされるようなものですが、データベースからファイル名を削除しようとすると、サーバー上のその写真も削除したいので、unlink()を試しましたが、代わりにエラーが発生し、「アクセスが拒否されました」と表示されます。

質問:
unlink();を使用する許可を得るにはどうすればよいですか?

xamppを使用してローカルマシンでのみこれを実行します

4

2 に答える 2

12

パーミッション拒否エラーは、それを行うための十分な/適切なパーミッションを持たずにファイルを削除しようとしているために発生します。

これを行うには、スーパーユーザーアカウントを使用しているか、ファイルをアップロードしたのと同じユーザーである必要があります。

コマンドラインからディレクトリに移動して、ファイルに設定されている権限を確認できます。

最も簡単な解決策は、administrator / rootとしてログインし、ファイルを削除することです。

別の回避策は次のとおりです。

// define if we under Windows
$tmp = dirname(__FILE__);
if (strpos($tmp, '/', 0)!==false) {
  define('WINDOWS_SERVER', false);
  } else {
  define('WINDOWS_SERVER', true);
}
  $deleteError = 0;
  if (!WINDOWS_SERVER) {
    if (!unlink($fileName)) {
      $deleteError = 1;
    }
  } else {
    $lines = array();
    exec("DEL /F/Q \"$fileName\"", $lines, $deleteError);
  }
  if ($deleteError) {
    echo 'file delete error';
  }


その他:PHPマニュアル、unlink()、投稿106952

常に最初にPHPマニュアルを確認し(質問がPHPに関する場合)、問題のある関数のページに移動して、検索をクリックすることをお勧めCTRL+Fします。ブラウザに入力して、たとえば、を入力するとWindows、その結果、あなたの場合、あなたが探していたものに少なくとも7つの関連する投稿が見つかるか、それに非常に近いものが見つかります。

于 2012-08-27T19:24:52.233 に答える
4

このURLを読む

Unlink()関数の使い方

この情報は、関数unlink()のコメントで見つかりました。

WindowsシステムとApacheでは、ファイルへのアクセスが拒否されると、ファイルのリンクを解除する通常のエラーになります。ファイルを削除するには、ファイルの所有権を変更する必要があります。例:

<?php 

chown($TempDirectory."/".$FileName,666); //Insert an Invalid UserId to set to Nobody Owern; 666 is my standard for "Nobody" 
unlink($TempDirectory."/".$FileName); 

?>

したがって、次のようなものを試してください。

$Path = './doc/stuffs/sample.docx';

chown($Path, 666);

if ( unlink($Path) )
    echo "success";
else
    echo "fail";

編集1

パスでこれを使用してみてください:

$Path = '.'.DIRECTORY_SEPARATOR.'doc'.DIRECTORY_SEPARATOR.'stuffs'.DIRECTORY_SEPARATOR.'sample.docx';
于 2012-08-27T19:28:04.437 に答える