RHEL에서만 PHP move_uploaded_file 권한이 거부되었습니다.

RHEL에서만 PHP move_uploaded_file 권한이 거부되었습니다.

내 PHP 스크립트는 그의 사진으로 새로운 사용자를 등록하는 데 사용됩니다.

Debian에서는 모든 것이 괜찮지만 서버 RHEL에 설치하면 문제가 시작됩니다.

/tmp/ 디렉토리의 권한은 777이고, "upload/"의 권한은 777이며, chown apache:apache입니다.

다음은 httpd의 error_log 일부입니다:

[Wed Jun 07 15:25:29.363766 2017] [:error] [pid 22867] [client 10.31.242.73:49624] PHP 경고: move_uploaded_file(upload/1268_org.jpg): 스트림을 열 수 없습니다: /var/의 권한이 있었습니다. www/html/inc/classes/user.inc.php 76행 거부, 참조 주소 위반:http://10.31.242.72/index2.php?mnu=10041

[Wed Jun 07 15:25:29.363808 2017] [:error] [pid 22867] [Client 10.31.242.73:49624] PHP 경고: move_uploaded_file(): '/tmp/phpmY6k8j'를 'upload/1268_org.jpg로 이동할 수 없습니다. ' /var/www/html/inc/classes/user.inc.php 76행에서 참조 주소:http://10.31.242.72/index2.php?mnu=10041

나는 무엇이 잘못되었는지 모른다. 내가 뭔가를 건너뛴 게 아닐까?

답변1

해결책을 찾았습니다이 웹사이트 이것이 SELinux범인입니다. 방금 다음을 입력하여 업로드 디렉토리에 httpd_sys_rw_content_t를 추가했습니다 semanage fcontext -a httpd_sys_rw_content_t "/var/www/html/upload(/.*)?".

답변2

chdir()파일을 이동하기 전에 가지고 계 셨나요 ? 이렇게 하지 않으면 파일은 "upload/1268_org.jpg"로 이동되지만 /var/www/html/inc/classes를 기준으로 하여 으로 이동하게 되며 /var/www/html/inc/classes/upload/1268_org.jpg원하는 위치는 확실히 아닙니다. .

해결책: 이동하기 전에 chdir을 사용하거나 절대 경로를 사용하십시오.

관련 정보