2012-01-08 3 views
-1

원격 호스트에 이미지를 업로드하고 싶습니다 (모든 것이 로컬입니다).PHP에서 chmod()를 사용하여 파일을 업로드 할 수없는 이유는 무엇입니까?

나는 그것을 할 내 다른 이전 프로젝트와 같은 코드 아래 사용했습니다 :

if (move_uploaded_file($_FILES["scan"]["tmp_name"], 'images/scans/1.jpg')) { 
    chmod ('images/scans/1.jpg','0644'); 
} 

하지만 인터넷에서이 코드를 실행할 때마다, 나는 오류 얻을 :

Warning: move_uploaded_file(images/profile/Mordent.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in ...

scans 디렉토리 권한을 으로 변경해야합니다. 그런 다음 이미지를 업로드 할 수 있습니다. 그렇지 않으면 나는 할 수 없다. 그것은 나를 위해 매우 이상합니다. 다른 프로젝트에서이 코드를 여러 번 사용했지만 문제가 없습니다.

+0

는 아마도이 질문은 당신 http://stackoverflow.com/questions/8776348/php-script-not-processing을 – fkerber

+0

'chmod를 도울 수()는'정수를 취 문자열에 8 진수로 표현 된 정수를 제공하면 예기치 않은 결과가 발생할 수 있습니다. 절대 명확성을 위해, 10 진 정수 (필요하다면 문자열로 전달) 또는 8 진수를 둘러싼 인용 부호를 제거해야합니다. 나는 이것이 chmod()에 도달하기 전에 일어나는 에러가 있기 때문에 여기에 문제가 없다는 것을 알지만, 여전히 주목할 가치가있다. – DaveRandom

+0

나는 당신의 제안을하고 따옴표를 제거했습니다. 고맙습니다. 하지만 당신이 말했듯이, 문제는 여전히 남아 있습니다. –

답변

2

images/scans/은 웹 서버 사용자가 쓰기 가능해야하며, 쓸 수있는 0777 일 필요는 없습니다. 먼저 images은 웹 서버 사용자가 읽을 수 있어야하며 마지막 위치에 5 (예 : 0755)이 있어야합니다. scans 디렉토리는 웹 서버 사용자가 소유하거나 쓰기 권한이 있어야합니다. 사용 권한이 0755 일 수있는 웹 서버 사용자가 소유하는 것이 좋습니다. php.net에 따르면

+0

나는 당신이 말한대로했으나 여전히 그 문제가 있습니다. –

0

:

Note: This function will not work on remote files as the file to be examined must be accessible via the server's filesystem.

+2

OP가 "원격 호스트"라고 말하면 나는 자신의 컴퓨터와는 달리 "프로덕션 서버"를 의미한다고 믿습니다. – JJJ