기본 콘텐츠로 건너뛰기

6월, 2013의 게시물 표시

APM Setup의 PHP 버전 바꾸기

현재 APM Setup 7은 PHP 5.2가 기본적으로 설치가 되는데요. 저는  5.3이 필요했습니다. 검색을 통해 간단한 방법을 찾았습니다. 여기(PHP 다운로드 페이지) 로 이동합니다. 위 페이지에서 원하는 버전을 찾은 후, "VC9 x86 Thread Safe" 항목의 "Zip" 파일을 다운로드합니다. 받은 파일의 압축을 풉니다. APM Setup 모니터를 실행해서 아파치 서버를 멈춥니다. APM Setup이 설치된 폴더로 이동합니다. (제 경우에는 C:\APM_Setup) Sever 폴더로 이동합니다. 그러면 PHP5폴더가 보이실 텐데, 만약을 대비해서 해당 폴더의 이름을 PHP5_Backup 등으로 변경합니다. 위의 '3.'에서 압축을 풀어 나온 폴더를 Server 폴더로 이동 시킨 다음에 폴더의 이름을 PHP5로 바꿉니다. APM Setup 모니터에서 아파치 서버를 다시 시작합니다. 정상작동 하는지 확인합니다. (※ 만약 문제가 발생하는 경우에는 새로 '7.'에서 추가한 폴더를 지우고 백업해둔 폴더의 이름을 원래대로 바꾸어주세요. 다른 방법을 찾으셔야 합니다..) 참고 자료: phpschool - " apmsetup 에서 php 업데이트시 어떤 파일을 받아야 해요? " apmsetup - " apmsetup 7 에서 php 5.3.3 을 쓰는 문제 "

MySQL에서 BINARY 비교

PHP에서 DB에 IP를 저장해야할 일이 있었습니다. 여기 저기 찾아보니, php의 inet_pton을 이용하여 IP를 BINARY 형태로 바꾼 후 저장하는 것이 좋다고 하더군요. 그래서 BINARY 형의 열을 만들고, 다음의 질의문을 이용해 IP를 저장했습니다. "INSERT INTO log (ip, ins_date) VALUES ( ... 생략 ...)" 그리고 같은 IP를 가지는 행이 몇 개나 있는지 알아보기 위해 "SELECT count(*) FROM log WHERE ip = '... 생략 ...'"를 실행했는데, 분명히 값이 해당되는 행이 있는데도 불구하고 결과가 계속 0으로 나왔습니다. 알고 봤더니, BINARY 형은 삽입된 데이터가 자료형의 크기 보다 작은 경우, 데이터 뒤에 '\0'(null 문자)를 자동으로 추가하는데, 비교할 때는 '\0'가 있는 것과 없는 것이 다른 것으로 처리되어서 발생한 문제였습니다. 예를 들어 설명하면, log 테이블에 BINARY(16)인 ip 열이 있는데, 여기에 "abc"라는 값을 삽입하면, 실제로는 "abc\0\0\0 ..생략.. \0" 이런 값이 들어가게 되고, 만약 ip = "abc"라는 조건으로 검색을 하면, 뒤에 붙어 있는 '\0'들 때문에 제대로 검색이 되지 않습니다. 해결법은 간단합니다. BINARY 대신에 VARBINARY 형을 사용하시면 됩니다. 참고: http://www.mysqlkorea.co.kr/sub.html?mcode=manual&scode=01&m_no=21689&cat1=11&cat2=334&cat3=347&lang=k

padding 때문에 고생했습니다...

padding 때문에 고생했습니다. 분명 엘리먼트의 크기를 제대로 계산 했는데도 원하는 모양이 나오지 않더군요. 여기 저기 검색하다가 우연히 padding 값은 엘리먼트의 크기 지정과 별도라는 것을 알게 되었습니다. 지금까지 padding은 전체 크기에 포함되는 줄 알았는데, 그게 아니더군요. 엘리먼트에 크기를 지정할 때는 원하는 크기에서 padding의 크기를 빼고 지정해주어야 합니다.