2011-07-26 5 views
2

저는 사용자가 파일을 데이터로 업로드 할 수있는 시스템을 구축하고 있습니다 (영구 저장이 아닌 내용 만). 지금은 그것과 같이, PHP에서 제공하는 임시 위치에서 파일의 내용을 잡기 위해 현명한인지 궁금하네요 : 로컬 호스트에업로드 된 파일 내용을 임시 위치에서 가져 오는 것이 현명합니까?

file_get_contents($_FILES['file']['tmp_name']) 

작품의 벌금을,하지만 난 두려워하는 것은에 등 일부 권한을-문제가있을 수 있습니다 호스팅? 어떤 도움을 주셔서 감사합니다.

+0

질문에 서명하지 마세요. 우리는 당신이 누구인지 이미 알고 있습니다. –

답변

6

데이터를 얻으려면 만 입력하고 'tmp_name' 변수에 표시된 파일을 읽는 것이 좋습니다. 다른 방법으로는 할 수 없습니다. PHP는 당신을 위해 파일을 저장하므로 읽을 수있다. 그렇지 않은 경우 서버 구성이 손상됩니다.

1

upload_tmp_dir 지시문을 사용하여 업로드 된 파일의 위치를 ​​구성 할 수 있으므로 권한 오류가 발생하지 않습니다. 그러나 ini_set을 사용하여 런타임에이를 설정할 수 없습니다.

업로드 된 파일을 새 위치로 이동하려면 move_uploaded_file을 사용해야합니다.

1

일반적으로 허용되는 방법입니다. upload_tmp_dir 위치는 전 세계가 읽을 수 있고 쓸 수있는 위치 (업로드를 받아 들여야 만하는 위치)라고 가정하면 업로드 한 후에 읽을 수 있습니다.

0

필자가 이해 한 바에 따르면 PHP 프로세스가 종료 될 때까지는 tmp 디렉토리의 파일이 확실히 보장 될 수 있지만 file_get_contents보다는 fopen()을 사용합니다.

권한과 관련하여 PHP 프로세스는 헤더에서 파일을 작성하여 100 % 동일한 프로세스가 읽기 액세스 권한을 가질 수 있도록합니다.

+1

엄밀히 말해서 쓰기 권한이 있기 때문에 읽기 권한이 있다고 보장 할 수는 없습니다. –

관련 문제