질문/조언질답게시판
Extra Form
PHP PHP 7.4
CMS Rhymix 2.x

스크린샷 2021-02-09 오전 5.22.51.png

정확히 언제부터 였는지는 모르겠습니다. 예전 부터 그랬던게 아닌건 확실합니다. 

memcached 사용하고 있고 라이믹스 버전 2.0.7 이에요..

설치 환경 달라진 점은 최근 브라우저 캐시 설정, 라이믹스 업데이트, redis-server 설치 등을 했습니다.

원인과 해결방법이 있는지 알고 싶네요ㅜㅜ

 

  • profile

    최근에 무슨 행동을 하셧다던가 뭐 어떤시점이 있는 이후로 캐시파일 재생성할 경우 해당 캐싱파일을 재대로 비워주지 못한다는 것으로 보시면됩니다. (뒤에 붙는 숫자는 캐시파일 재생성을 시작한 시점의 유닉스 시간을 뜻합니다.)

     

    이런경우라면 대부분 PHP에러로그를 확인해보세요

     

    캐시파일 재생성시 fatal 에러를 출력하여 발생되는경우가 많습니다.

  • profile ?
    로그를 살펴보기 전에 시간이 표시된 캐시폴드들을 ssh접속해서 삭제를 전부하고 캐시파일재생성을 했는데 이제는 폴더가 생기지 않습니다. 갑자기 정상이 되었어요
    로그 파일을 열어보니
    rm: cannot remove '/var/www/html/files/cache_1612815634/store/32/a9/32a9e2b0ce8ad4cf4dfc83e1b4e83c55a8564d79.php': Permission denied
    이렇게 몇 줄 있는게 전부입니다.
  • ? profile
    로그에 답이 있네요. Permission denied = 퍼미션이 잘못되었다고 합니다.
  • profile ?
    네 근데 퍼미션을 건들지 않았는데 폴더가 생성이 되었다가 다시 정상이 되었어요. 지울때 생겨난 로그 같은데 폴더 생성 된거랑은 관계있나요? 터미널에서 지울때도 아무런 문제가 없었거든요
    또 이런 일이 생길까봐 자세히 알고 싶네요
  • ? profile
    터미널에서 지울때 계정하고 라이믹스가 작동하는 계정하고 다르면 라이믹스 캐시재생성 같은 것 할때 퍼미션 때문에 삭제가 안될 수 있을 것 같은데요?
    퍼미션 건들지 않았다가 아니고 퍼미션을 확인하셔야 하는거 아닌가요?
  • profile ?
    캐시폴더 & 여러개 생성된 캐시폴더의 퍼미션은 www-data 인데 그걸 변경한 적이 없는데 무엇을 확인해야하는지 모르겠네요. 삭제도 문제없이 됐구요.

    궁금한건 퍼미션 오류가 캐시파일 재생성 폴더 생성과 연관이 있는지에요..
    위에 올린 로그는 rm -r 로 지울때 생긴 로그이고 폴더 생성과는 관계가 없는거 같아서요.
  • ? profile

    라이믹스에서 발생한 오류가 아닌가요?
    그럼 뭐 저도 잘 모르겠네요. 서버에는 저도 지식이 없어서요.

    근데 sh 접속한 계정이 못지우는거는 문제 아닌가요.


    라이믹스에서 자동으로 폴더가 생기는 이유가 못지워서 입니다.

     

    캐시파일 재생성 여러번 해보시고 폴더 생기는지 확인해 보세요.

  • profile ?

    위에 적은처럼 유닉스 시간이 포함된 폴더명의 캐시폴더를 삭제했더니 더이상 캐시폴더가 생성되지 않습니다.
    제가 궁금한건 저 로그가 폴더를 여러개 생성되게 하는 이유가 담긴 로그인지가 궁금한거에요..

    로그를 찾아봐도 rm 퍼미션 로그만 있을뿐인데 기진곰님께서 로그에 답이 있다고 달아 주셔서
    이 로그가 캐시폴더생성과 관련이 있는거라면 이런 일이 생긴김에 확실히 알고 넘어가려고요..

  • ? profile
    답변을 달아주시겠지만 저게 라이믹스의 작동때 발생한 에러 로그라고 생각하고 답해주신거 아닐까요? 저는 저 로그가 그런 로그라고 적어주신걸로 이해했다가 아니란걸 댓글 보고 알았는데요.

    아마 sh에 로그인한 계정이 저 파일들을 삭제하지 못하는 계정이라면 저 에러가 뜨고 안지워지는게 당연할 것 같습니다.

    그런데 중간에 캐시폴더가 자꾸 생성되었던 문제는 글쎄요. 정황만 봐서는 원인 찾기 힘들것 같네요.
  • ? profile

    캐시파일 재생성을 클릭하면 아래와 같은 순서로 작업이 진행됩니다.

    1. 원래 있던 cache 폴더의 이름을 cache_16xxxxxxxx 로 바꿉니다. 이름을 바꾸지 않고 그 자리에서 삭제하려고 하면 다른 유저들이 계속해서 새로운 캐시파일을 생성해대기 때문에 삭제할 수가 없거든요.

    2. 이름을 바꾼 폴더를 삭제합니다.

    3. cache 폴더는 자동으로 다시 생깁니다.

    이 때 2단계에서 어떤 오류가 발생하면 이름을 바꾼 폴더가 그대로 남는 거예요. 이름을 바꾸는 순간 캐시폴더로서의 역할은 상실하고, 새로 생긴 cache 폴더가 그 역할을 물려받기 때문에 cache_16xxxxxxxx 폴더가 남아 있더라도 실제 사이트 작동에 영향을 주지는 않습니다. 그냥 디스크 공간을 낭비할 뿐이죠.

    삭제시 퍼미션 오류가 발생하는 원인은 대부분 PHP를 실행하는 계정(예: www-data)이 아닌 다른 계정(root, ubuntu, 내 FTP 계정 등)으로 어떤 작업을 하던 도중 그 계정 소유의 캐시파일이 생겼기 때문입니다. 다른 계정이 소유한 파일이니까 www-data 권한으로는 삭제할 수 없지요. 잘못된 계정을 한 번이라도 사용하면 그 파일이 마치 움직일 수 없는 바위처럼 남아서 계속 삭제를 방해할 수도 있습니다. 그 파일 하나만 지우면 다시 멀쩡해지고요.

  • profile ?
    그렇군요.. PHP 로그였어요
    새로 생긴 캐시폴더들을 삭제했더니 정상이 되더라 이건 뭔가 우연의 일치 같아서ㅠㅠ
  • profile ?
    정말 감사합니다.
    우연의 일치로 되었다는 느낌이 찝찝했는데 정말 궁금했던 점이 풀렸습니다.
    다음에 같은일이 생기더라도 원인을 알고 대처할 수 있을 것 같습니다!