내 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을 사용하거나 절대 경로를 사용하십시오.