0

ユーザーからのファイルのアップロードを受け入れる PHP サイトがあり、ファイルの作成/変更 (この場合は同じである必要があります) の日付/時刻をデータベースに保存する必要があります。

私はいくつかのアプローチを試しました。これらはすべて何も返さないようです:

$metadata = stat($localfile);
$timestamp = $metadata[9];
die($timestamp);

$metadata = stat($localfile);
$timestamp = $metadata[10];
die($timestamp);

$metadata = filemtime($localfile);
die($metadata);

$metadata = filectime($localfile);
die($metadata);

そこで、に基づいて shell_exec アプローチを試みましたls -l。これは少なくとも何かを返しますが、ファイルがアップロードされたときに時刻が上書きされ、出力が役に立たないように見えます (つまり、現在の時刻が返されます)。

ファイルがアップロードされる前のように、Linux/PHP 5.4 で作成/変更日時を返す確実な方法はありますか?

NB$localfileは、ローカル システム上のファイルへのパスです。

4

2 に答える 2

0

stat()関数は、連想配列を生成します。変更時間には$stat['mtime']を使用し、作成時間には$stat['ctime']を使用します。これは、サーバーのファイルのコピーに関連しています。

ファイルは、アップロード時にコンピューターからサーバーに「移動」されません。データストリームは、Webサーバーの場所に移動される前に、一時ディレクトリの新しいファイルにコピーされます。ブラウザも変更タイムスタンプを送信しません。

于 2013-02-24T22:57:39.407 に答える
0

私の知る限り、PHPには変更時刻を過ぎたファイルの履歴を見つける方法はありません。Linux(追加のツールを追加せずに)は、3回のアクセス/変更/変更を維持します

ls -ce
ls -le
ls -ue

Linuxで監査ツールを見つけない限り、ファイルへの変更の「履歴」を取得する方法はありません。したがって、PHPはあなたがやろうとしていることをサポートしません。

データベースは、ファイルへの変更履歴を正確に保存するために作成されており、それを使用します。

于 2013-02-24T22:44:14.670 に答える