2012-02-01 23 views
0

開発環境でUbuntu 11.10を使用してPHPアプリケーションを開発しています。 私はいくつかのpdfファイルを含むディレクトリ '/ usr/src/app_name /'を持っています。 ファイル名と最終更新日時を取得する必要があります。php filemtimeがfalseを返す場合、phpアプリケーションのルートディレクトリ以外

次のコードスニペットです:

foreach (new DirectoryIterator('/usr/src/app_name') as $file) { 
    if($file->isDot()) continue; 
     print $file->getFilename().' : '.date ("F d Y H:i:s.", filemtime($file)).'<br>'; 
} 

私が正しくファイル名を取得するが、私に与えます:PHPの警告:filemtime():statに失敗しました....と私は1月1日と時間を取得し、 1970年

しかし、私は

foreach (new DirectoryIterator('/var/www/app_name') as $file) { 
    if($file->isDot()) continue; 
    print $file->getFilename().' : '.date ("F d Y H:i:s.", filemtime($file)).'<br>'; 
} 

すなわち、アプリケーションのルートディレクトリにディレクトリを変更した場合、私は彼らの最終更新時刻とともにアプリのPHPファイルのすべての名前を取得します。

これに関するお手伝いをさせていただきます。ありがとうございます。

+2

'open_basedir'は制限的ですか? –

+0

'filemtime($ file-> getRealPath())'を試しましたか? –

+0

shurelyアクセス権の問題です – dmitry

答えて

1

私はすでにコメントで言いましたが、当時は問題かどうかわかりませんでした。それでは完全な説明があります。

a comment on the doc of filemtimeはあなたがfilemtime絶対パスを供給する必要があることに言及しているので、問題を解決するのに役立つ可能性がfilemtime($file->getRealPath())を使用します。今すぐイテレータの結果($file変数)を使用すると、絶対パスではなくファイルの名前だけを返すDirectoryIterator::__toStringが呼び出されます。

/var/wwwのために働いていた可能性がありますが、これは作業ディレクトリだったためですが、わかりません。

関連する問題