2017-02-14 8 views
0

PHPでファイルが変更または作成された日付を取得しようとしています。これを行うには、私はfilectime機能を使用していますが、それは常に次のエラーを私に与えている:警告:filectime():パスにstatが失敗しました

Warning: filectime(): stat failed for path

パスは、私は、ファイルを格納したルートです。

ルートはこれに似たものである:

http://MYIP/documents/animals document 1.pdf 
http://MYIP/documents/animals document 2.pdf 
... 

と私は、ファイルのスペースを成文化するためのURLを交換する必要があります。

$path= str_replace(' ', '%20', $path); 

私はこれを行う場合、私はリンクを使用することができます私のブラウザでこのファイルを開くのですが、filectime機能で同じパスを使用しようとすると、私が前に置いた警告が表示されます。

何か不足していますか?

ありがとうございます!

+0

http://php.net/manual/en/wrappers.http.php:_ "stats()をサポートしています:いいえ" _ HTTP URLには使用できません。 – CBroe

+1

_「PHPでファイルを修正または作成した日付を取得しようとしています」_ - HTTP URLではなく、ファイルシステムのパスを使用します。 – CBroe

答えて

1

filectime関数は、文字列パスをパラメータとして想定しています。これはPosix statシステムコールを使用する場合の単なるラッパー関数です。

システムコール:それはあなたのファイルシステム上にあるかのように

int stat(const char *pathname, struct stat *buf);

だから、それはパラメータを期待しています。 URLは、適切なスクリプトを実行するために、サーバ側できれいなホワイトスペースレス識別子を持つようにエンコードされます。

「コード化」を気にしないでください! UNIXシェルで使用する標準の文字列パス(スクリプトのディレクトリを基準にして)を使用してください。

この場合、PHP関数の正しいパスを指定するだけです。

filectime("documents/animals document 2.pdf"); 
+1

_ "パスの空白にはエスケープシーケンスが必要です" _ - ファイルシステムではなく、使用しないでください。 – CBroe

+0

@CBroeああ!うん、あなたは正しい!訂正ありがとう!私はまだその文章を入力している間、UNIXシェルの文脈にあった...:P – varun

+0

@varunしかし、IPは私のものだが外的なので、パスでファイルにアクセスしなければならなかった: 'IP/animals/animals document 2.pdf '。 –

関連する問題