4

PHPのunlink()を使用してubuntuでファイルを削除することに不満を感じています。

次のように非常に単純なシミュレーションを作成しました。

  1. /var/www の下に「files」という名前のフォルダーを作成し、766 パーミッションで作成します。
  2. ファイルをアップロードし、そのフォルダーに「image.png」と言って、許可を666に設定します
  3. delete.php という名前の php ファイルを作成し、パーミッションを 644 に設定して、/var/www ディレクトリにアップロードします。
  4. ブラウザでファイルを呼び出します(私はlocalhostを使用します)

「image.png」は「files」ディレクトリにまだ存在します

delete.php の php スクリプトは次のとおりです。

$filename = 'image.png';
$file = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR . $filename;
unlink($file);

次のスクリプトも試しました:

$filename = 'image.png';
$dir = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'files';
chdir($dir);
unlink($filename);

しかし、まだファイルを削除できません。

4

2 に答える 2

5

Unlinkは、失敗時に警告をスローします。E_WARNING が表示されているかどうかを確認して、何が起こっているかを確認してください。

通常、それはユーザーの権利に帰着します。スクリプトがブラウザによって実行される場合は、通常、wwwrunまたはwwwdata(または同様のもの) という名前のユーザーがサーバー上でスクリプトを実行することに注意してください。

このユーザーに削除権限があるかどうかを確認してから、再試行してください。

于 2013-02-21T07:52:47.623 に答える
2

ディレクトリのフォルダー/所有者は、php の実行に使用されているユーザーとは異なるユーザーである可能性があります。

ユーザー php が割り当てられたフォルダーを作成する必要があります。自分でできない場合は、ISP に依頼してください。それが私が同様の問題を解決した方法です。

UNIX システムでは、あるユーザーが別のユーザーのファイルを削除することはできません。777に設定すると、削除できます...

于 2013-02-21T07:52:14.650 に答える