2012-06-21 3 views
0

서버의 폴더에 파일을 저장하려고 할 때 move_uploaded_file() 함수에서 내 코드에서 권한 거부 오류가 발생합니다. 임시 폴더에서).PHP에서 이미지를 업로드하려고하는데 move_uploaded_file() 함수에서 권한 거부가 발생했습니다.

내 사용자는 모든 웹 사이트 디렉토리 및 파일에 대해 모든 권한을 가지고 있습니다. 사용 권한이 필요한 아파치 사용자가 있습니까? 이 apache 사용자에게 권한을 부여하려면 어떻게해야합니까?

그렇지 않은 경우. 이 문제를 해결하기 위해 PHP chmod 함수를 사용할 수있는 방법이 있습니까?

도움 주셔서 감사합니다.

답변

0

정확합니다. 파일을 이동해야하는 폴더에 에 권한이 필요하지 않은 경우 웹 서버에 권한이 있어야합니다.

기본적으로 웹 서버가 실행중인 계정을 파악하고 해당 사용자에게 대상 디렉토리에 대한 쓰기 권한을 부여해야합니다.

sudo lsof -i tcp:80 

당신은 다시 사용자 열이 라인의 무리를 얻어야한다 :

는 웹 서버 계정 이름이 무엇인지, 다음 명령 (리눅스를 실행하는 가정)을 시도 파악합니다. 하나는 뿌리가 될 것이고, 하나는 무시할 것이다. 나열된 다른 사용자는 웹 서버가 실행되고있는 사용자입니다. 아마도 www 또는 www 데이터 또는 apache 등과 같은 것일 것입니다. 그 후

, 업로드 디렉토리의 상위 디렉토리로 이동하고 다음 명령을 사용하여 소유권과 권한의 변경 : 그 시점에서

sudo chown www-data:www-data uploads 
sudo chmod u+w uploads 

, 웹 서버의 사용자는 이제 업로드 디렉토리에 대한 쓰기 액세스 권한이 . 문제가 있으면 의견을 게시하면 도와 드리겠습니다.

+0

덧붙여서, 나는 당신의 문서 루트 밖에서 업로드 디렉토리를 가지고 있다고 강력하게 제안 할 것이다. 즉, 문서 루트가/var/www (Linux 기반 서버의 일반적인 설정) 인 경우 업로드 디렉토리는/var/uploads와 같을 수 있습니다. 또한 웹 서버 사용자에게 쓰기 권한이없는 디렉토리에 대한 쓰기 권한을 부여하지 않는 것이 가장 안전한 방법입니다. 예를 들어 동적 내용이 데이터베이스에 의해 생성되고 사이트 뒤에있는 코드가 변경되지 않으면 전체/var/www 디렉토리가 웹 사용자 계정에 의해 읽기 전용으로 안전하게 될 수 있습니다. –

+0

고마워요! – Irlanco

-1

폴더 777 권한을 부여했다고 가정합니다. 폴더에는 이러한 권한이 필요합니다.

+0

아니요, 그러지 마세요. 보안 상 위험 할 수 있습니다. 아래에 자세한 정보를 입력하십시오. –

+0

그는 보안이 필요하다고 말하지 않았습니다. 폴더 777 권한을 부여하면 많은 응용 프로그램을 사용할 수 있습니다. – 0123456789

+0

그가 신속하고 지저분한 테스트와 마찬가지로이 작업을 수행했다는 것을 입증하고 올바른 작동을 확인한 후 올바른 소유권/사용 권한을 즉시 설정했다면 동의했을 수 있습니다. 그 또는 그녀가 처음부터 올바른 사용 권한을 설정해서는 안됩니다. 더 힘들지는 않습니다. 나중에 나쁘게 나쁜 습관을 잊지 말아야합니다. –

관련 문제