>

우분투 18.0 TLS와 Windows 10에서 PHP 7.0과 7.2를 사용하고 있습니다.

일반적으로 파일을 업로드하고 그 내용을 처리하는 스크립트가 있습니다.

내가 요구하는 동작은 Ubuntu에서 업로드 된 파일을 위해 생성 된 임시 파일이 아래와 같은 확장자없이 생성된다는 것입니다 :

path: "/tmp"
filename: "phpdvdVPB"
basename: "phpdvdVPB"
pathname: "/tmp/phpdvdVPB"
extension: ""

그러나 Windows에서 작성된 임시 파일은 다음과 같은 확장자로 만들어집니다 :

"dirname" => "C:\xampp\tmp"
"basename" => "php34E6.tmp"
"extension" => "tmp"
"filename" => "php34E6"

임시 파일을 생성하는 tempnam () PHP 메소드를 사용할 때도 동일한 결과가 발생합니다. Linux에서는 확장명없이 파일을 생성하지만 Windows 확장명을 갖습니다.

내 질문은 왜 리눅스가 확장명없이 임시 파일을 생성하고 Windows가 예입니까?

  • 답변 # 1

    .TMP는 Windows에서 프로그래밍 방식으로 의미가 없으며 일반적으로 확장명은 등록되지 않습니다. 그러나 임시 파일이이 확장명을 갖는 것이 일반적인 규칙이므로 사용자는 이러한 파일을 안전하게 삭제할 수 있습니다.

    DOS 및 이전 Windows 버전은 마지막 핸들을 닫을 때 파일의 자동 삭제를 지원하지 않으므로 응용 프로그램이 충돌하면 임시 파일을 삭제할 수 없습니다.

    PHP는 아마도 GetTempFileName 를 사용하고있을 것입니다  이 확장 기능을 자동으로 추가하는 기능입니다. 이 기능은 고유 한 파일 이름을 생성합니다.

    실제로는 Windows에서 임시 파일을 표시하는 방법이 있지만이 기능은 실제로 최종 사용자에게 노출되지 않습니다. FILE_ATTRIBUTE_TEMPORARY 로 파일을 표시 할 수 있습니다  속성. 이는 페이징 중 메모리 관리자가 요구하지 않는 한 디스크에 내용을 쓰지 않도록 Windows에 지시합니다.

    모든 .TMP 파일이 임시 파일이라고하는 정식 문서 참조가 없습니다. 이것은 오래된 기록이며 규칙에 따라 수행됩니다.

    GetTempFileName 외에  이 확장을 사용하는 기능, KB 92635의 말 :

    와이즈 비즈

    이 문서는 Windows 2 및 3을 대상으로합니다. ~ 접두어는 선택 사항이며 ~는 Windows 95 이상에서 짧은 이름으로 사용됩니다.

    A number of files may appear on the hard drive in various directories beginning with a tilde character (~) and ending with a .TMP extension. These may be temporary files created by Windows that remain on the hard drive due to an irregular exit from a Windows session.

    Under normal conditions, these files are closed and deleted by Windows when you quit a Windows session. However, if you quit Windows in an irregular way (for example, restarting the computer or turning it off during an active Windows session) the files are not closed or deleted.

    ...

    To delete a temporary file, use the following steps:

    ...

    Delete any existing .TMP files. Make sure Windows is not running at the time these files are deleted. Some of these .TMP files may be files that Windows is using.

관련 자료

  • 이전 python - 장고 마이그레이션이 연결된 데이터베이스에 적용되지 않음
  • 다음 java - 공유 환경 설정에서 값을 변경하는 방법