Overview

혹시 ‘imagemagick의 늪’을 아십니까? 브랜디의 신입 개발자들이 아마존보다 무서워하는 무시무시한 영역입니다. imagemagick을 사용하려면 php에 imagick을 우선 확장모듈로 달아주어야 합니다. 브랜디에서는 관리자 페이지의 이미지 컨트롤에 사용하는 라이브러리이기도 하지요. 만약 imagemagick이 없다면 관리자 페이지에서 수많은 상품 이미지를 업로드할 때 서버가 아무 반응도 없이 멈출 수도 있습니다. 다만 이것을 설정하기까지 짧게는 반나절에서 길게는 이틀까지 소요된다는 게 함정입니다. 오늘의 포스팅은 지난 16시간의 눈물을 압축한 글입니다.

Process

설정 성공 환경

  • OS : High Sierra 10.13.2
  • XAMPP for OSX 5.6.32 (PHP 5.6.32)
  • imagemagick 7.0.7-21 (homebrew로 설치)
  • php56-imagick (homebrew로 설치)
  • freetype 2.9 (별도 가이드대로 설치)
  • zlib 1.2.11 (homebrew로 설치)
설정 환경
설정 환경



0. 먼저 폴더 권한주고 시작하기

//폴더가 없다면 생성
[프로젝트 루트]/include/temp/images

//프로젝트 루트에서
$ sudo chmod -R 777 include/temp



1.imagemagick 설치 방법

brew install imagemagick 



2.php56-imagick 설치 방법

brew search imagick # 네이밍 확인
brew install homebrew/php/php56-imagick # 가이드 작성 당시 포뮬러명



3.php.ini 수정

  • Dynamic Extension 부분에 추가한다.
Dynamic


Dynamic


  • brew 로 설치했을 때 기본 경로 : extension=”/usr/local/opt/php56-imagick/imagick.so”
  • 다른 경로로 지정된 경우 해당경로로 설정한다. (xmappfile 폴더 내부에 둬도 됨)
  • 참고: xampp 기본 익스텐션 경로 /Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20131226/

4.apache 실행

  • 잘 실행될 경우, phpinfo()를 통해 imagick 라이브러리가 떴는지 확인한다.
imagick
imagick 라이브러리 확인


  • 실행되지 않을 경우, xamppfiles/logs/php_error_log 파일에 로그가 떨어진다.
  • 해당 로그 파일을 아래와 같은 프로그램으로 실행시켜 두면 자동으로 로그가 갱신되어 편하다.
file



5.로그의 내용은 대체로 xampp 내부의 freetype 버전이 안 맞는 문제이기 때문에 다음 항목에서!

  • 요구되는 libfreetype.6.dylib 버젼은 22.0.0 이상
  • xampp내부의 libfreetype.6.dylib 버젼은 15.0.0
  • 버젼 확인 방법은 otool -L /(경로)/libfreetype.6.dylib
file



6.freetype 설치 방법

  • patrickbougie.com에서 2.9 버전으로 맞춰준다. (작성시점 최신)
  • 참고1: 2018.01.10에 brew로 진행하면 2.9 최신 버전이 설치된다.
  • 참고2: brew로 설치하면 필요 없는 파일이 많아지므로 위의 링크를 참조하는 것이 좋다.
freetype
FreeType


  • 위 사이트를 따라 진행한 경우 /usr/local/mac-dev-env/freetype-2.9 경로에 필요한 파일들이 생성된다.
freetype_file
생성된 파일들


  • 위 파일들을 /Applications/XAMPP/xamppfiles 하위에 같은 폴더에 정확히 매칭시켜서 붙여넣는다.
    (그전에 미리 xamppfiles의 원본 파일들은 백업해두자. 파일이 생각보다 꽤 많으니…)

    7.모두 진행했다면 apache 서버 실행!

    • 실행도 안 되고, 로그도 안 나오는 경우엔 터미널에서 Application/XAMPP/xamppfiles/bin 으로 이동한다.
    • sudo ./apachectl 명령어를 실행한다. (그냥 apachectl 하면 맥 자체 아파치가 뜨게되니 주의!!)
    • 콘솔에 표시되는 로그를 보면 libz.1.dylib 관련 문제인데, OSX의 High Sierra 에서 발생하는 문제로 보인다. 즉, 더 높은 버전의 zlib가 필요하다.
apache



8.zlib 설치 방법

  • brew install zlib (작성시점 기준 1.2.11 설치됨 - xampp 내부에는 1.2.8)
  • 위 키워드로 설치하면 /usr/local/Cellar/zlib/1.2.11 에 xmppfiles 하위 폴더의 일부와 같은 폴더들이 생성된다.
xmppfiles 하위 폴더


  • 위의 화면에서 include, lib, share 폴더를 xamppfiles 에 정확하게 매칭시켜 붙여넣는다. (xampp 원본 파일은 백업)

9.모든 과정이 완료되었다면 서버를 켜고 phpinfo()를 통해 imagick 확장 프로그램이 떴는지 확인한다.

Conclusion

이번 개발 과정은 자아성찰을 할 수 있는 시간이기도 했습니다.
“이 길이 나의 길이 아닌가? 그래서 이 imagick 나부랭이 따위가 나를 거부하는 건가”
phpinfo() 화면에 imagick이란 글자를 만났을 때의 탄성은 2018년을 향한 포효와 다르지 않았습니다. 올해도 열심히 개발을 하겠지만 다시는 ‘imagemagick의 늪’에 빠지지 않기 위해 이곳에 기록을 남겨 둡니다. 언젠가는 분명 쓸모가 있겠지요. 이 글을 읽는 개발자 분들도… 부디 살아 남으시길 바라며…


강원우 과장 | R&D 개발2팀
kangww@brandi.co.kr
브랜디, 오직 예쁜 옷만