2012-10-21 3 views
2

파일 업로드 및 테스트를 위해 PHP 스크립트를 작성했습니다. 업로드 디렉토리에 777 권한을 부여했습니다. 스크립트가 정상적으로 작동합니다.PHP 사용 권한 오류 - 실행 권한이 필요합니까?

지금은 분명한 이유에 대한 실행 권한을 제거 할,하지만 그렇게되면, 나는 다음과 같은 오류가 발생합니다 :

가 인 move_uploaded_file ([파일 경로가]) [function.move 업로드 한 파일이] : 열지 못했습니다 스트림 : 사용 권한이 거부되었습니다.

권한을 777에서 776으로 낮추면 파일을 업로드하려고 할 때이 오류가 표시됩니다. 실행 권한이 필요한 이유가 무엇인지 이해할 수 없습니다. 누군가가 빛을 비추어 줄 수 있습니까?

감사합니다.

답변

3

디렉토리에 UNIX & Linux에서 액세스하려면 실행 권한이 있어야합니다.

here에서 인용 :

On a directory, the execute permission (also called the "search bit") allows you to access files in the directory and enter it, with the cd command, for example. However, note that although the execute bit lets you enter the directory, you're not allowed to list its contents, unless you also have the read permissions to that directory.

나는이 웹 서버가 액세스하고 있음을 나타냅니다으로 O의 디렉토리 (세 번째 자리)에 실행 권한을 취소한다는 사실이 문제가 걱정입니다 유발한다는 lserni에 동의 디렉토리가 소유자 또는 그룹의 구성원이 아니어야합니다. 그걸 고쳐야 해.

0

Just taking the permissions down from 777 to 776 causes this error to appear

이것은 발생하지 않아야합니다. 770 권한으로 실행할 수 있어야합니다. 즉, 웹 서버 그룹과 함께 웹 사이트 사용자 ID가 디렉토리를 소유해야합니다.

이렇게하면 소유자와 웹 서버가 모두 디렉토리와 데이터를 조작 할 수 있습니다. 웹 사이트를 제공하는 웹 서버가 웹 사이트 소유자와 동일한 사용자 ID를 사용하는 것이 이상적입니다. 그러면 디렉토리 모드 700을 유지하고 사용자가 읽기/쓰기 및 목록으로 만들 수 있습니다.

권한의 마지막 숫자가 물어 뜯는 경우, 서버가 "everyone"에 대한 권한으로 실행되고 있음을 의미합니다. 개발 사이트에서는 괜찮지 만 공유 사이트에서는 좋지 않습니다. 암호는 컴퓨터의 다른 웹 사이트 소유자가 읽을 수 있음).

그러나 테스트 컴퓨터에서 실행중인 경우 777 권한은 괜찮습니다. 디렉토리 실행 가능 비트는 실행 가능 (디렉토리는 어쨌든 실행될 수 없음)을 의미하는 것이 아니라 '목록 가능'을 의미합니다. 이 비트가 없으면 파일을 생성하고 삭제할 수 있지만 실제로 파일이 있는지 여부를 알 수 없으므로 move_uploaded_files이이 상황에 반대합니다.

다른 해결책 (예 :)이 있습니다.

chown -R nobody upload_directory 
chmod -R 755 upload_directory 

첫 번째 명령은 PHP가에서 작동 무엇인가 '아무도'에 아래 upload_directory 및 파일의 소유자를 변경 있습니다 .. 당신은 다음과 같은 명령을 실행해야 실행 권한을 제거 또한 What are best practices for permissions on Apache-writable directories?

0

참조 . 두 번째는 upload_directory 및 파일을 변경하여 사용자가 서면으로 액세스 할 수있게합니다. -R은 재귀 호출 용입니다.

관련 문제