/etc/http/conf/httpd.conf, /etc/PHP.ini, 디렉토리 권한 등등등... 웹에서 찾은 모든 방법을 동원해도 PHP에서 파일이 올라가지 않는 경우가 있다.
/var/log/httpd/error_log를 살펴보면
[Mon Dec 13 13:26:54 2010] [error] [client 아이피.아이피.IP.IP] PHP Warning: move_uploaded_file(/var/www/html/uploads/s02_6.xls): failed to open stream: Permission denied in /var/www/html/uploader.php on line 31, referer: http://아이피.아이피.IP.IP/uploader.php
와 같이 스트림을 열 수 없고 (권한이 없어서...) 그래서 실패...
이 경우는 거의 100% SELinux 때문에 발생하는 문제다....
해결책은 SElinux에게 아파치 웹 포트는 허용하라고 설정을 바꿔주면 된다.
(아래는 페도라(Fedora) 12에서 검증한 것임)
# system-config-selinux
위의 명령어를 root 상태에서 실행하고 "프로세스 도메인" 부분으로 가서 httpd의 Mode를 허용으로 바꿔주면 됨(요때 시간이 좀 걸림)
끝... |