고수님들의 도움을 구합니다.
본문
안녕하세요. 이제 아파치 웹서버를 공부중인 초보자입니다.
제가 그동안 사용중이던 웹호스팅업체에서 용량이 부족해 카페24의 VPS로 홈페이지를 옮기면서
아래와 같이 문제가 발생하여 고수님들의 의견을 구합니다.
서버의 설치환경은 Rocky 8.x 리눅스 / apache 2.4.37 / php 7.2.24 입니다.
대충 다른 기능들은 정상적으로 동작하는 것으로 보이는데 게시판에서 에디터를 쓰든 일반 베이직 게시판을 사용하든 이미지 파일을 업로드시 Forbidden 에러가 발생합니다.
참고로 다른 텍스트나 기타 첨부파일 형태로는 그림이나 파일등 모두 정상 업로드가 됩니다.
그런데 유독 에디터에 있는 그림 파일로만 업로드하면 Forbidden 에러가 발생합니다.
현재 그누보드에 게시된 다양한 해결책 등은 거의 적용해 본듯합니다.
새로 게시판을 생성후 적용도 시도해 봤습니다.
서버에서 제시한 에러 로그 내용은 아래와 같습니다.
[proxy_fcgi:error] [pid 1836:tid 140367349397248] [client ***.***.***.***] AH01071: Got error 'PHP message: PHP Warning: include(/var/www/html/g5/theme/charity1000/skin/latest/charity1000/latest.skin.php): failed to open stream: No such file or directory in /var/www/html/g5/lib/latest.lib.php on line 109PHP message: PHP Warning: include(): Failed opening '/var/www/html/g5/theme/charity1000/skin/latest/charity1000/latest.skin.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/html/g5/lib/latest.lib.php on line 109',
*Rocky8.x에서는 빨간색으로 표시된 디렉토리가 없는 것으로 봐서는 이 디렉토리가 없는게 에러의 원인으로 보이는데 제가 이를 어떻게 수정해야 하는지 궁금합니다.
참고로
그누보드의 latest.lib.php의 109번 라인의 소스는 아래와 같습니다.
ob_start();
include $latest_skin_path.'/latest.skin.php';
$content = ob_get_contents();
ob_end_clean();
return $content;
감사합니다.^^
답변 5
파일이 있는데 없다고 나오면 퍼미션 문제가 있을 것입니다.
먼저 ftp 로 들어가서 파일이 있는지 확인해 보시고 콘솔에서 퍼미션을
파일은 644 디렉토리는 755로 변경하면 될 것입니다.
그래도 안되면 소유자와 그룹을 변경해 주면 될 것입니다.
파일이 없거나 권한문제일 가능성이 커보입니다. 업로드 시 오류없어는지 도체크해보시기바랍니다. 또한 현제 7.2x php버전을 선택하셔는데 너무낮습니다. 버전 업을 하시길 바랍니다.
권한확인 한표 던지고 가요~
파일 존재 여부, 퍼미션 문제, SELinux 설정, .htaccess
*파일,
ls -l /var/www/html/g5/theme/charity1000/skin/latest/charity1000/latest.skin.php
존재 여부 확인하고, 만약 파일이 없다면 백업에서 복구하거나 새롭게 설치.
퍼미션 및 소유권을
sudo chmod 644 /var/www/html/g5/theme/charity1000/skin/latest/charity1000/latest.skin.php
sudo chmod 755 /var/www/html/g5/theme/charity1000/skin/latest/charity1000
sudo chown -R apache:apache /var/www/html/g5/theme/charity1000
수정, 또한 아래 명령으로 Apache의 실행 유저 확인
ps aux | grep httpd
- 출력 예시:
root 1234 0.0 0.1 123456 7890 ? Ss 10:00 0:00 /usr/sbin/httpd -DFOREGROUND
apache 5678 0.0 0.2 234567 12345 ? S 10:00 0:01 /usr/sbin/httpd -DFOREGROUND
apache 9012 0.0 0.2 234567 12345 ? S 10:00 0:01 /usr/sbin/httpd -DFOREGROUND
Apache 실행 유저를 확인한 후, 다르다면(예로, www-data)
sudo chown -R User:Group /var/www/html/g5/theme/charity1000
위의 명령으로 변경
*SELinux 설정 확인 및 수정
sestatus
Enforcing 상태라면 다음 명령어로 일시적으로 비활성화 후 테스트:
sudo setenforce 0
정상 작동하면 아래 명령어로 SELinux 컨텍스트 변경:
sudo chcon -R -t httpd_sys_content_t /var/www/html/g5/theme/charity1000
*.htaccess 파일 확인 후 Options -Indexes가 있다면 주석 처리하거나 삭제
find /var/www/html/g5/ -name ".htaccess"
cat /var/www/html/g5/.htaccess
ModSecurity가 차단하는 경우 /etc/httpd/conf.d/mod_security.conf에서 해당 규칙을 제외
data 폴더 권한이 707 인지.
DB 사용자 권한이 쓰기가 가능한 권한인지 채크해보세요.