PHP : 파일 생성 날짜를 어떻게 알 수 있습니까?


84

파일이 많은 폴더를 읽고 있습니다.

파일 생성 날짜를 어떻게 알 수 있습니까? 나는 그것을 얻는 직접적인 기능을 보지 못합니다.

있다 filemtimefilectime.

파일이 수정되지 않은 경우 어떻게됩니까?

답변:


111

filectime을 사용하십시오 . Windows의 경우 생성 시간 을 반환하고 Unix의 경우에는 생성 시간이 없기 때문에 얻을 수있는 가장 좋은 변경 시간을 반환합니다 (대부분의 파일 시스템에서).

또한 일부 유닉스 텍스트에서는 파일의 ctime을 파일 생성 시간이라고합니다. 이것은 잘못된 것입니다. 대부분의 Unix 파일 시스템에는 Unix 파일 생성 시간이 없습니다.


파일이 마지막으로 변경된 시간을 반환하거나 실패하면 FALSE를 반환합니다. 시간은 Unix 타임 스탬프로 반환됩니다.
zod dec.

@zod 첫 줄보다 조금 더 읽으면 더 많이 이해할 수 있습니다. 댓글도 조금 들어 가세요.
Alin Purcaru 2010

그것은 생성 날짜가 아닙니다. 그게 내가 말한 전부입니다 :-)
zod

11
filemtimeLinux의 경우 filectime소유자, 권한 변경 및 다른 작업 중에 변경 되므로 더 정확하고 정확 합니다. 당신은 더 많은 기회를 사용하여 Linux에서 생성 시간을 얻기 위해 얻을 것이다filemtime
Fedir RYKHTIK

이 PHP 함수를 실행하거나 마지막 업데이트를 위해 MySQL 필드를 가져 오는 것이 더 빠를까요? 제 경우에는 이미지 경로가 DB에 저장되어 있고 이미 선택 쿼리를 실행하고 있습니다
drooh

17

다음은 PHP 문서에서 가져온 예제 코드입니다. https://www.php.net/manual/en/function.filemtime.php

// outputs e.g.  somefile.txt was last changed: December 29 2002 22:16:23.

$filename = 'somefile.txt';

if (file_exists($filename)) {

    echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename));
}

코드는 파일 이름을 지정한 다음 파일이 있는지 확인한 다음를 사용하여 수정 시간을 표시합니다 filemtime().

filemtime() 파일의 경로 인 1 개의 매개 변수를 사용하며 이는 상대 또는 절대적 일 수 있습니다.


4
Rakesh는 코드를 설명해주세요. 코드를 게시하고 사람들이 이해하기를 기대하지 마세요.
Persijn

2
이 코드 전용 게시물이 질문에 답할 수 있지만 그 이유에 대한 설명을 추가하십시오. 이것은 미래의 독자가 자신의 상황에 대한 답을 평가하는 데 도움이 될 것입니다.
Tom Brunberg

1
이 함수 filemtime()는 수정 시간을 반환합니다.
Stefan

Michael, filemtime () 함수의 의미가 명확하지 않기 때문에 코드에 대한 설명이 필요합니다.
Radium

이 코드는 파일 이름을 지정한 다음 파일이 있는지 확인한 다음 filemtime ()을 사용하여 수정 시간을 표시합니다. filemtime ()은 파일의 경로 인 1 개의 매개 변수를 취하며 이는 상대적이거나 절대적 일 수 있습니다. 위의 예는 여기에있는 PHP 문서에서 복사 한 것입니다. php.net/manual/en/function.filemtime.php
Harvey Dobson

8

불행히도 Linux에서 실행중인 경우 마지막 수정 날짜 만 저장되므로 정보에 액세스 할 수 없습니다.

파일 시스템에 약간 의존합니다. ext2와 ext3은 생성 시간을 지원하지 않지만 ext4는 지원한다고 생각합니다.


-3

나는이 주제가 매우 오래되었다는 것을 알고 있지만, 누군가가 답을 찾고 있다면, 나는 내 솔루션을 게시하고 있습니다.

이 솔루션은 파일 시작 부분에 추가 데이터가 있어도 괜찮은 경우에 작동합니다.

기본적으로 아이디어는 파일이 존재하지 않는 경우 파일을 만들고 첫 번째 줄에 현재 날짜를 추가하는 것입니다. 다음으로, 첫 번째 줄을으로 읽고, fgets(fopen($file, 'r'))그것을 DateTime객체 또는 다른 것으로 바꾸고 (이상한 형식으로 저장하지 않는 한 당연히 원시적으로 사용할 수 있습니다) 짜잔-생성 날짜가 있습니다! 예를 들어 30 일마다 로그 파일을 새로 고치는 스크립트는 다음과 같습니다.

if (file_exists($logfile)) {
            $now = new DateTime();
            $date_created = fgets(fopen($logfile, 'r'));
            if ($date_created == '') {
                file_put_contents($logfile, date('Y-m-d H:i:s').PHP_EOL, FILE_APPEND | LOCK_EX);
            }
            $date_created = new DateTime($date_created);
            $expiry = $date_created->modify('+ 30 days');
            if ($now >= $expiry) {
                unlink($logfile);
            }
        }

5
날짜를 얻기 위해 파일을 수정하거나 삭제해야하는 이유는 무엇입니까? 이 원래의 문제에 대한 해결책이처럼 그 소리가 나지 않는다
니코 하세
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.