2012-11-09 3 views
-1

파일 업로드 시스템이 PHP에서 어떻게 작동하는지 알아 내려고하고 있습니다. 내 코드 :move_uploded_file issue

if(isset($_FILES['profile_pic'])){ 
    $allowed_ext= array('jpg','jpeg','png','gif'); 
    $file_name = $_FILES['profile_pic']['name']; 
    $file_ext = strtolower(end (explode('.',$file_name))); 
    $file_size = $_FILES['profile_pic']['size']; 
    $file_tmp = $_FILES['profile_pic']['tmp_name']; 
    if(in_array($file_ext, $allowed_ext) === false || $file_size > 2000000){ 
     $display_block = 'display:block !important'; 
     $pic_errors ='<p>* File format JPG, JPEG, GIF or PNG</p> <p>* Smaller 1Mb</p>'; 
    } else { 
     move_uploaded_file($file_tmp, '/members/'); 
     echo 'uploaded..'; 
    } 
}//if(isset($_FILES['profile_pic'])) 

모든 권한이있는 것으로 보입니다.

내가 오류는 다음과 같습니다

경고 : 인 move_uploaded_file (/ 회원 /) [function.move 업로드 파일] : 스트림을 열지 못했습니다 :/홈/a6671212/public_html을 /의 디렉토리입니다 settings.php on line 116

어떻게이 오류를 해결할 수 있습니까? 모든 사람에게

감사합니다 ..

나는이 문제를 가지고 이해로 ..

  1. @Prisoner가 쓴 .. 인 move_uploaded_file ($ file_tmp, '/ 회원 /'); - 난 ..

  2. @Ketan 파텔이 쓴, 내가 그렇게 말할 수있는 경우

기능

가, 다른 형식으로 변경해야합니다// 회원 후 파일 이름을 작성하지 않았다

move_uploaded_file ($ file_tmp, "/ members/$ file_name"); - 큰 따옴표 ...

It Worked !!!!!!!! 감사합니다!

+0

구성원 디렉토리가 있습니까? 거기에 업로드 할 권한이 있습니까? – ajtrichards

+2

중복? http://stackoverflow.com/questions/7623622/issue-with-move-uploaded-file –

+1

그 오류는 상당히 자명하다. – piddl0r

답변

3

당신은 파일 이름을 정의하는, 그래서 뭔가 같은 :

move_uploaded_file($file_tmp, 'members/filename.ext'); 

이나, 귀하의 경우 : 또한

move_uploaded_file($file_tmp, 'members/'.$file_name); 

, 당신의 파일 시스템의 루트에/회원/디렉토리 (이다)? 그렇지 않은 경우 members 디렉토리에 대한 상대 경로 또는 절대 경로를 사용하십시오. 편집 : 디렉토리입니다// 내가 추측하고있어, 오류에 의해 회원 심사, 그래서 이것은 잘 작동합니다 :

move_uploaded_file($file_tmp, '/members/'.$file_name); 

먼저, 그렇지 않으면 move_uploaded_file가 이전 파일을 덮어 쓰게됩니다 또한 파일의 존재를 확인하는 것을 잊지 마세요 .

+0

시도 중이다. 지금은 .. – Alex

+0

네, 회원이 디렉토리입니다 .. move_uploaded_file ($ file_tmp, '/members/'.$file_name); 경고 : move_uploaded_file (/members/very-angry-little-soldier.jpg) [function.move-uploaded-file] : 스트림을 열지 못했습니다 : /home/a6671212/public_html/settings.php에 해당 파일이나 디렉토리가 없습니다. 116 번 라인에 폴더 구성원이 존재합니다 .. – Alex

+0

디렉토리 일 수도 있지만 ROOT 파일 시스템에 있습니다. 경로 : http://en.wikipedia.org/wiki/Path_(computing) – Prisoner

0

기능 move_upload_file()은 유닉스 명령 mv과 같이 작동합니다. 대상 파일 경로를 지정해야합니다.

이 당신의 코드 라인을 변경

와 그것을 작동합니다 :

move_uploaded_file($file_tmp, './members/' . $file_name); 
+1

에서 '+'는 올바른 연결 연산자가 아닙니다. – Prisoner

0

move_uploaded_file($file_tmp, '/members/'); 

move_uploaded_file($file_tmp, 'members/' . $filename); 

+0

을 사용해야합니다. + – piddl0r

+0

오른쪽, 죄송합니다 :) – hermann

+0

아무 걱정도, 그렇지 않으면 정답을 downvote 받고 싶지 않았어 :) – piddl0r

0
(파일 이름을 첫 번째 슬래시를 제거하고 추가) 변경 시도

당신이 이것을 사용합니다 f 기름 부음

move_uploaded_file($tmp_name, "$uploads_dir/$name"); 
+0

이것은 문제를 해결 ... 감사합니다 – Alex

0
move_uploaded_file($file_tmp, '/members/' . $fileName); 
0

는 ('/ 회원 /', $ file_tmp)

인 move_uploaded_file을 변경해보십시오; in move_uploaded_file ($ file_tmp, 'members /'+ $ filename);

그리고 chamod로 권한을 올바르게 설정하십시오. chmod -R 0755 명의 회원. 또한 응용 프로그램에 $ file_temp 위치에 액세스 권한이 있고 읽기/쓰기 퍼미션이 있는지 확인하십시오.