웹마스터 팁
서버 이전하고 놓치기 쉬운 점(files의 소유권과 root의 퍼미션)
2010.02.02 10:58
서버를 이전하고, 오비이락이라고 XE core를 업데이트했는데, 아래와 같은 메세지가 계속 뜨면서 각종 모듈이나 애드온이 설치되지 않고, 게시판, 페이지 등도 생성되지 않았습니다. XEcore의 문제인지, 서버이전의 문제인지 파악할 수 없더군요.
Warning: dir(/www/***.com/) [function.dir]: failed to open dir: Permission denied in /www/***.com/classes/file/FileHandler.class.php on line 171
Fatal error: Call to a member function read() on a non-object in /www/***.com/classes/file/FileHandler.class.php on line 172
팁 란에 서버이전과 관련된 여러 문서를 찾아봐도 뽀족한 답이 없어서 XE core 프로젝트에 문의했었는데요, 하늘03님의 도움을 받아보니, 서버 이전하면서 놓치기 쉬운 두 가지 땜에 문제가 났더군요. 아래는 하늘03님과 쪽지 주고받았던 내용인데요, 혹 서버 이전하시는 분들은 꼭 참고하세요^^
1. files의 소유권 문제
보통 처음 XE를 설치하고 나면 files의 소유권이 nobody로
되는데요, 서버이전을 하면서 files를 .tgz로 압축했다가 풀어 놓으니 소유권이 사용자에게 주어졌더군요. 이로 인해 퍼미션 에러가
계속 났던 것입니다. 게다가 레이아웃을 변경해도 저장되지 않는 문제가 있었는데 이 둘에 대한 대책은 아래와
같았습니다.
웹에서 접근하려면 nobody권한이 write를 할 수 있어야 하는데, files아래의 대부분의 폴더와 파일들의 owner가 사용자(제 경우엔 simdoly)로 되어있기 때문에 웹에서 파일을 쓰려다가 에러가 나는 경우가 많은 것 같습니다.호스팅 업체에 요청하여서 files아래의 owner를 nobody로 바꿔달라고 요청해야 합니다.
레이아웃이 저장되지 않아 애를 먹었는데요, 이 경우 faceOff 디렉토리의 퍼미션을 777로 바꿔서 해결해 주었습니다.
2. root의 권한(퍼미션)문제
두번째는 root의 권한 문제입니다. root의 권한은 미처 생각하지도 못했는데, root에 XE를 직접 설치한 경우 꼭 확인해 봐야 할 것 같습니다.
전체 root directory가 744로 되어있었는데요, Apache에서 접근하려면 755 이상이어야 하는 것 같습니다. 755로 접근했더니 잘 돌아갑니다. :)
chmod 755 .
이렇게 files의 소유권과 root의 퍼미션을 조정하고 나니 아무런 문제가 없었습니다. 혹 서버 이전하시는 분들은 꼭 참고하시길.
* 도움을 주신 하늘03님께 삼사의 마음을 전합니다.
댓글 4
-
현의느낌
2010.02.02 11:15
-
영구만세
2010.02.02 15:17
아항, 그렇군요. 서버에 따라 달라질 수도 있겠군요.
"현의느낌"님처럼 좋은 추가 설명이 있으면 같은 경우에 어려움을 겪는 분들이 좀 더 쉽게 문제를 해결할 수 있겠죠^^
모두 같지는 않을 것 같구요, 다만 서버를 이전했는데, 위와 같은 에러 메세지가 뜰 때 한번쯤 참고하세요.
-
춘(春)™
2010.07.12 21:53
같은 오류로 인해 한동안 고생하다가~~ 이글을 보구 한번에 해결 했습니다..
오류 메세지가 똑같았거든요~~ 휴~~ 하시름 놓았습니다..
이런글이 저같은 사람에게 큰 도움이 됩니다.. ^^ 감사합니다..
-
maxtabby
2010.11.19 00:28
와아 단비와 같은 정보로, 서버 이전하고 끙끙 앓고 있던 문제를 해결하였습니다.
정말 감사합니다..
추가로 설명을 달겠습니다. ^^
1.
cafe24의 경우는 files 등 아파치 서버가 저장하는 파일의 소유자가 계정아이디로 됩니다.
원래 그렇게 되도록 서버 설정이 되어있는 것이니 바꿀 필요는 없습니다. ^^;
그리고 서버마다 아파치의 사용자 계정아이디가 다를 수 있습니다.
nobody, www-data, apache 등..
2.
계정id의 홈디렉토리 위치를 말씀하신 것 같네요.
ssh로 로그인한 직후 위치에서 chmod 755 . 을 하면 되겠습니다.