본문 바로가기
연구하기/기타

nForge 3.1.1 및 3.2.1 우분투 12.04 에서 설치 진행되지 않음.

by 썰렁황제 2012. 9. 18.

원문은 여기

http://dev.naver.com/tracker/?group_id=26&atid=143&func=detail&aid=35912


우분투 12.04에서 nForge 3.1.1 및 3.2.1 설치 시 처음 메뉴에서 홀딩된 상태로 이후 전혀 진행되지 않는 문제가 발생한다.

진작 install.php 로 dev.naver.com 에서 검색했으면 나왔을 텐데. 쩝. 이걸로 오늘 4시간 정도는 버린 듯. 내 시간 돌려줘 ㅜㅜ

어쨌거나 원인은 php 에서 사용하는 stream_get_line() 함수의 잘못된 블록 현상으로 인해 발생한 것으로 보인다.


대응하려면 위의 링크를 참고하여 직접 소스를 뜯어 고쳐야만 한다. nForge 의 버그라기 보다는 우분투의 PHP 쪽의 버그로 보인다.

구글 등 일반 검색 엔진으로는 도통 나오지 않아, 다른 분들이라도 고생을 좀 덜 수 있게, 블로그에 포스팅 해 둔다.

* 2012년 9월 19일 추가

  복구 과정에서 위의 참조에 언급된 방법 중 하나인 fread-fseek 방식을 사용했을 때 잘못된 동작을 하는 것을 확인. 원인은, 넘어온 파일 포인터가 가리키는 것이 seek를 지원하지 않는 스트림이기 때문. PHP 버전과 관련이 있는 것인지, 아니면 우분투 특성인지는 잘 모르겠다. (우분투 특성일 가능성도 있는 게, stream_get_line() 은 우분투만 걸린단 말이지) 문제는 이 방법이 fgets 가 잘 동작하지 않아서 대응한 것이라는 점. 따라서 이 문제에 대응하려는 분들은 먼저 테스트 해 보고 선택하는 것이 좋다.

  그래서 추상화 관점에서는 좋지 못하긴 하지만, 아래 nori 님이 언급하신 대로, fgets 로 읽은 후 끝 문자 1개를 제거하는 방식으로 처리했다. 왜 추상화 관점에서 좋지 못하냐면, 윈도와 같은 운영체제는 엔터 입력 시 라인 피드와 캐리지 리턴 2개가 들어가기 때문. 뭐 복구를 위해 가상화 서버에 설치하는 것인 만큼 일회성 코드로 사용하는 것인지라 굳이 그런 거 따질 이유는 없겠지만, 혹시 다른 운영체제에서 같은 방법을 적용하실 분들이라면 그런 점에 주의하기 바란다.

반응형