1

webroot外のphp(リンク解除機能)ファイルで削除したい。私のウェブルートは

C:\server\webroot\project\... in webroot I have folder named project and in there I have .php files.

ファイルディレクトリはどうですか。C:\ server \mp3_files..にあります。

また、mp3_filesディレクトリのhttpd.conf Alias( "mp3")に作成しました


私はこのスクリプトをC:\ server \ webroot \ project\test.phpで書いています

スクリプトはそうです=>

function delete($filename){
if (unlink("/mp3/" . $filename)){
    echo "Deleted";
} else {
    echo "No";
}
 }
delete("file.txt");

このスクリプトはphp-errors=> PHP-WARNINGで私に与えますそのようなファイルまたはディレクトリはありません

また、私は(test.php)htmlフォームにこれを持っています=>

<a href="/mp3/file.txt">Download</a>

そしてこれは動作します(このfile.txtを開きます)

では、なぜマークされた関数「delete($ filename)」で削除できないのでしょうか。

4

3 に答える 3

2

"/mp3/"。$ filenameは絶対ファイルパスであり、Webサーバーのルートからの相対パスではないため、/ server / mp3の下を見る必要があるときに、ファイルシステムのルートの下にmp3ディレクトリがあることを前提としています。

編集

そしてそれは/server/mp3または/server/ mp3_files

あなたの投稿はあなたのコードと矛盾しているようです

于 2012-01-04T15:08:24.373 に答える
2

PHPのファイル関数は、ファイルシステムのルートから取得されます。

あなたは書くべきです:

function delete($filename){
if (unlink("C:\\server\\mp3_files\\" . $filename)){
    echo "Deleted";
} else {
    echo "No";
}
 }
delete("file.txt");
于 2012-01-04T15:09:17.397 に答える
1

内部PHPファイルパスキャッシュが正しい情報を取得することを確認するにはclearstatcache()、リンク解除の前後でリセットします。通常、パスキャッシュは、ファイル操作に関連するすべてのPHP関数の後にリセットされます。shell_exec('rm file.txt')または同様のファイルを削除する場合は、キャッシュをリセットする必要があります。

http://php.net/manual/ini.core.php#ini.realpath-cache-sizeおよびhttp://php.net/manual/ini.core.php#ini.realpath-cache-ttlを参照してください。

于 2012-01-04T15:14:37.697 に答える