2012-01-04 13 views
1

webrootの外にあるphp(unlink function)ファイルで削除したいです。私のWebルートは、php unlinkファイルを改装しました

ファイルディレクトリについてです。それが位置するCです:\サーバー\ mp3_files ...

はまた、私はhttpd.confのエイリアス( "mp3")で作成したmp3_filesディレクトリの


私はCでこのスクリプトを書いています:\サーバー\ Webrootウェブルート\プロジェクト\のtest.phpを

スクリプトは次のようであるので、=>

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

このスクリプトは、PHP-エラーで私を与える=>PHP-警告ませんそのようなファイルやディレクトリ

も、私は(test.phpを)を持っているのhtmlこの=>

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

を形成し、これは動作します(これは、このfile.txtなどを開きます)

だから私は、なぜ削除できないと思いましたよマークされた関数 "delete($ filename)"で?

+1

PHPを参照してください。絶対パスまたは相対パスを使用する必要があります。 –

答えて

2

"/ mp3 /" $ファイル名は、Webサーバのルートからの相対、絶対ファイルパス、ではないので、あなたが/サーバーの下に探している必要があり、あなたのファイルシステムのルートの下mp3ディレクトリ/ mp3

EDIT

を持っていると仮定していますそれ/サーバー/ mp3または/サーバー/ mp3_files

あなたの投稿が

+0

ここには矛盾はありません。ファイル機能はエイリアスを見ることができません。mp3_filesは動作していますが、エイリアス(mp3)ではありません – DaHaKa

+0

ApacheエイリアスはApacheでは認識されますが、PHPでは認識されません... filesystem関数はファイルシステムから動作するものであり、Apacheのものではありません。 –

+1

はい、私も言っています:) – DaHaKa

2
PHPで

ファイル機能は、ファイルシステムのルートから行くあなたのコードと矛盾するようです。

あなたは書く必要があります。

function delete($filename){ 
if (unlink("C:\\server\\mp3_files\\" . $filename)){ 
    echo "Deleted"; 
} else { 
    echo "No"; 
} 
} 
delete("file.txt"); 
+0

これも試しましたが、結果は同じです=> PHP-WARNINGいいえそのようなファイルまたはディレクトリ – DaHaKa

+0

が編集されたので、エイリアスフォルトですか? – DaHaKa

+0

私はWindows Serverで使用されていませんが、スラッシュを使用しないでくださいが、代わりにバックスラッシュを二重にする必要があります。 – mat

1

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

は、Apacheエイリアスフォルダについて知らないhttp://php.net/manual/ini.core.php#ini.realpath-cache-sizehttp://php.net/manual/ini.core.php#ini.realpath-cache-ttl

関連する問題