2012-03-13 31 views
2

私はPHPをローカルで実行しています(Webサーバーはまったく関わっていません)。パス内のスペースを含むファイルにアクセスするのに問題があります。この後者の場合は、よく形成され、ファイル・スキームURIである空白を含むファイル名

$indexFile = "file:///Users/username/Documents/My‰20Folder/test.txt"; 
echo file_exists($indexFile); 

AFAICT:

私の裸の骨の場合は

$indexFile = "file:///Users/username/Documents/My Folder/test.txt"; 
echo file_exists($indexFile); 

かです。ファイルをそこにドラッグすると、ブラウザの場所フィールドに表示される内容とまったく同じです。

スペースを含まないURIは問題ありません。残念ながら、私は "My Folder"を "MyFolder"に変更する自由はないし、解決策を探したい。

urlencode、rawurlencode、escapeshellargを使ってみましたが、%20をバックスラッシュエスケープスペース"My\ Folder"に置き換えようとしましたが、これは動作しません。私もgoogleとstackoverflowで狩りましたが、多くの話題がありますが、質問には答えられません。

スペースを含むパスを使って任意のファイル(ローカルホスト上)にアクセスするにはどうすればよいですか?

+5

'ファイルを取り払う試してみてください。どちらの場合は、初めに//'とところで –

+0

を何が起こるかを見ますそれらの作業と最悪の最悪の場合は、システムのPATHに "Users/username/Documents/My Folder /"を追加し、設定ファイルで名前( "test.txt")でファイルを参照してみてください。 – user980058

+0

また、ブール値を出力するには 'echo'の代わりに' var_dump() 'を使うことをお勧めします。 –

答えて

1

最初のコードスニペットから最初のfile://を削除します。それは動作します。

$indexFile = "file:///Users/username/Documents/My Folder/test.txt"; 
echo file_exists(str_replace("file://", "", $indexFile)); 
2

このMac OSXのファイルシステムのように見えるので、これは動作するはずです:

$indexFile = "/Users/username/Documents/My Folder/test.txt" 
echo file_exists("${indexFile}"); 
関連する問題