PHP 의존성 관리도구 - Composer 사용법



Composer 영문 메뉴얼 바로가기

Composer 한글 메뉴얼 바로가기


컴포저는 node.js 의 npm ruby의 bundler 와 같이 PHP 환경에서 사용하는 의존성 관리 도구입니다.

컴포저의 역할은 아래와 같습니다


a) 여러 라이브러리에 의존하는 프로젝트를 가지고 있습니다.

b) 이러한 라이브러리들은 또다른 라이브러리들을 필요로 합니다.

c) 이때 여러분이 필요로 하는 의존 관계의 라이브러리들을 지정해 줄 수 있습니다.

d) 컴포저는 패키지가 설치되어야 하는 버전을 찾아, 알맞은 버전의 패키지들과 의존 패키지들을 설치합니다. (프로젝트 디렉토리로 다운로드 한다는 의미입니다.)





시스템 요구사항


컴포저는 PHP 5.3.2+ 이상에서 동작합니다. 몇가지 민감한 PHP 설정을 필요로 하지만 인스톨러를 사용하면 이러한 비호환성을 체크하고 경고를 확인할 수 있습니다.




Composer 설치(*nix 환경)


Windows 환경의 경우 상단 링크의 메뉴얼을 참고해주세요.


1. 지역 설치(Locally)

특징: 프로젝트 안에 Composer를 포함하는 방식

장점: Composer가 프로젝트 안에 직접 설치 되기 때문에, 프로젝트를 다른 곳에 배포 할 경우 배포받은 곳에서 특별히 컴포저를 설치 하지 않고도 응용프로그램 안에 포함된 Composer를 이용하여 패키지 관리가 가능하다.



2. 전역 설치(Globally)

특징: 자신의 운영체제 전체에 Composer를 포함하는 방식

장점: 같은 OS 안에 여러개의 프로젝트를 운영하고 있을 경우, 전역 설치를 하면 각각의 프로젝트에 설치하지 않고도 Composer를 사용가능!



저는 전역설치를 하기로 했습니다. 방식은 거의 비슷하므로 매뉴얼을 참고해주세요.!

메뉴얼에는 아래와 같이 cURL 을 이용한 설치 방법이 나와있습니다.


Bash(Linux)

[root@ lib]# curl -sS https://getcomposer.org/installer | grep


나의 경우 위의 방식으로 설치하자 아래와 같이 에러가 나며 설치실패! (설치환경 : CentOS7)


Bash(Linux)

[root@ lib]# curl: (48) An unknown option was passed in to libcurl


왜 인지는 모르겠지만 다른 방식을 사용하기로 했다.


Bash(Linux)

//PHP 인터랙티브 모드 진입 [root@ lib]# php -a //원격지 설치 파일 카피 php > copy('https://getcomposer.org/installer', 'composer-setup.php'); //인터랙티브 모드 종료 (Ctrl+c) 후 파일 확인 //PHP로 파일실행 [root@ lib]# php composer-setup.php All settings correct for using Composer Downloading... //설치완료 Composer (version 1.6.3) successfully installed to: /usr/local/lib/composer.phar Use it: php composer.phar //글로벌로 실행을 위해 파일 이동 [root@ lib]# mv composer.phar /usr/locl/bin/composer





Composer 사용법


저는 라이브러리 들 중 카카오 알림톡을 사용하기 위한 unirest 모듈을 다운받아 보기로 했습니다. Unirest PHP



1. Composer.json 파일 생성


Composer의 메인 저장소 (Composer의 npm)

먼저 Composer를 처음 사용하는 경우, 라이브러리를 설치 하고자 하는 프로젝트 하위에 composer.json 파일을 생성합니다. 이미 사용 중에 라이브러리를 추가 하는 경우에는 만들어져있는 파일을 사용하면 됩니다.


만든 파일에 아래와 같이 작성합니다. ( //로 표기한 주석은 지워주세요 )

Bash(Linux)

{ "require-dev": { //mashape vendor의 unirest-php 패키지의 3.대 버전중 가장 최신버전을 사용 "mashape/unirest-php": "3.*" } }


저는 unirest 의 홈페이지에 나와있는 composer 사용방법에 있는 대로 require-dev 로 작성했습니다.



2. 설치


require 와 require-dev 는 약간의 차이가 있는데, require-dev 에는 디버깅, 테스트 등 개발시 필요한 해키지 정의를 위해서 필요한 라이브러리 들을 정의한 후 , 실제 서비스 환경에는 설치를 하지 않을 수 있습니다. 반대로 require 에는 서비스 환경에 꼭 필요한 라이브러리 들을 정의합니다.


Bash(Linux)

//require, require-dev에 열거된 모든 패키지 설치 [root@ www]# composer install //require, require-dev에 열거된 모든 패키지 업데이트 [root@ www]# composer update //require에 열거된 패키지만 설치 [root@ www]# composer install --no-dev //require 열거된 패키지 업데이트 [root@ www]# composer updatel --no-dev



위의 설치 방법은 Composer를 글로벌 설치 했을 경우의 설치 방법입니다. 로컬 설치를 했을 경우에는 아래 방식을 사용합니다


Bash(Linux)

//require, require-dev에 열거된 모든 패키지 설치 [root@ www]# php composer.phar install



3. composer.lock ( composer update 와 composer install )


composer의 install 과 update 명령은 의미상 차이가 존재합니다.

위와 같이 composer 를 install 하면 composer.lock 파일이 생성됩니다.

이 파일은 내가 install 한 시점에 설치 된 라이브러리 들의 버전 정보들을 담고 있습니다.

그래서 다른사람이 해당 파일들을 이용해 composer 를 install을 한 경우, 이전에 설치 되어있던 라이브러리들은 업데이트 된 최신 버전이 아닌 composer.lock 파일에 명시되어 있는 버전이 설치 되게 됩니다.

그래서 이 파일을 이용해 composer가 install될 때마다 라이브러리가 최신 버전으로 업데이트 되는 상황을 막을 수 있습니다.

만약, 라이브러리를 최신버전으로 갱신하고 싶을 경우 update 명령을 사용하면 됩니다.

새로운 패키지가 추가됐을 경우에도 update 명령을 사용합니다.

프로젝트 참여자 의존성 일치시키기



4. composer 적용


위와 같이 composer 설치를 마치면, 프로젝트 하위에 vendor 라는 디렉토리가 생성됩니다.

이 디렉토리 안에는 내가 설치 한 라이브러리 들이 존재합니다.

적용은 라이브러리 들의 디렉토리 경로와 상관없이 내가 적용하고자 하는 파일에 아래와 같이 작성해 주면 됩니다.


PHP

<?php require("vendor/autoload.php"); ?>



+ Recent posts

티스토리 툴바