PHP

Composer

고급 내용에 속합니다. 후속 토픽을 보신 후에 나중에 보셔도 됩니다.

확장기능 관리자

PHP의 확장기능은 PHP의 기본 기능으로 제공되지 않는 기능을 제공한다.

Composer

컴포저는 PHP의 의존성 관리도구이다. 필요한 확장 기능을 쉽게 설치해주는 기능도 제공하지만, 프로젝트에서 필요한 확장 기능을 통합해서 관리해주는 도구다.

Unix 계열

아래의 명령을 이용해서 Composer을 설치한다.

curl -sS https://getcomposer.org/installer | php

Windows

윈도우(Bitnami 기준)에서 Composer을 사용하기 위해서는 php의 openssl 확장 기능을 활성화해야 한다. php.ini 파일에서 아래 부분의 주석을 해제한 후에 웹서버를 재시작한다.

;extension=php_openssl.dll

나머지 설명은 동영상과 Composer 메뉴얼을 참고한다.

Packagist

Packagist는 컴포저의 메인 저장소다. 이곳을 통해서 다양한 패키지를 검색할 수 있다. 주소는 아래와 같다.

https://packagist.org/

의존성 정의

프로젝트에서 사용할 라이브러리를 아래와 같이 지정한다. 파일의 이름은 composer.json으로 해야 한다.

{
    "require": {
        "dflydev/markdown": "1.0.3"
    }
} 

설치

아래와 같이 명령을 실행하면 composer.json의 내용을 읽어서 여기에 정의된 라이브러리를 설치한다. 

php composer.phar install

composer.lock

컴포저를 인스톨하면 composer.lock 파일이 생성된다. 이 파일의 내용을 열어보면 현재 설치된 라이브러리를 이용하기 위해서 필요한 선행 라이브러리들의 항목과 정확한 버전이 기술되어 있다. 이것은 일종의 스냅샷이라고 할 수 있는데 지금 상태를 기록해둔 것이다. 컴포저 인스톨을 실행했을  때 이 파일이 존재한다면 컴포저는 이 파일에 기술된 라이브러리와 다른 버전의 라이브러리만을 설치할 것이다.

만약 라이브러리를 최신버전으로 갱신하고 싶다면 아래와 같이 update 명령을 사용하면 된다.

php composer.phar update

라이브러리의 사용

다운로드된 패키지는 vendor 디렉토리에 저장된다. 그리고 라이브러리를 사용할 때는 아래의 구문의 코드의 초입에 삽입한다.

require 'vendor/autoload.php';

아래는 dflydev/markdown 라이브러리를 사용한 전체 소스코드다.

3.php

<?php
require 'vendor/autoload.php';
use dflydev\markdown\MarkdownParser;
$markdownParser = new MarkdownParser();
echo $markdownParser->transformMarkdown("#Hello World");
?>

댓글

댓글 본문
작성자
비밀번호
  1. 군구마
    여러 문서를 봤어도 헤깔렸는데.
    짧은 강의 한편으로 정리되었습니다.
    매우~~ 감사합니다.
  2. 신입1
    감사해요
  3. 덕분에 해결했습니다 감사합니다...ㅠㅠ
    대화보기
    • 보보
      컴포저가 왜 강력한지 이 강의를 보니 조금은 알겠네요.ㅎ
    • eyedroot
      감사합니다!
    • Kyouwon Lee
      감사합니다!
    • JustStudy
      고맙습니다
    • Sang Jin Lee
      curl -sS https://getcomposer.org......ler | php

      를 실행했는데

      The OpenSSL library (0.9.8zc) used by PHP does not support TLSv1.2 or TLSv1.1.
      If possible you should upgrade OpenSSL to version 1.0.1 or above.

      이렇게 나왔는데 나왔는데 무슨 말인가요?.?
    • SK Kim
      강의 내용이 오래되어서 쉽지 않았네요.
      지금 저의 지식 단계에서 composer의 역할 및 필요성에 대해 잘 모르겠지만...
      일단 다음 강의로 넘어갑니다.
      참고.
      설치한 버전
      https://packagist.org......own
      3.php
      <?php
      #Hyeon Kim님 내용 참고
      require 'vendor/autoload.php';
      use Michelf\Markdown; #디렉토리가 없는데도 이렇게 해야함, 이유는 모르겠음.
      $markdown = new Markdown(); #construct(?)명이 바뀐듯.
      echo $markdown->transform("#Hello World"); #함수명이 바뀐듯.
      ?>
    • 김선호
      "dflydev/markdown": "1.0.3"이라고 했더니 설치가 안되어서 "dflydev/markdown": "1.*"라고 하고서 인스톨
      하니까 되네요. 현재까지는 잘 따라 왔습니다. 이고잉님 또 감사드립니다.
    • Hyeon Kim
      위에서 사용하신 패키지는 abandoned 됬다고 해서 https://packagist.org......own
      이거 사용했는데, 3.php 내용만 php-markdown패키지에 맞춰서 작성하면 잘돌아가네염

      <?php
      require 'vendor/autoload.php';

      use \Michelf\Markdown;
      $text = '## 이거슨 H2 입니다.';
      $html = Markdown::defaultTransform($text);

      echo $html;
      ?>
    • daniel
      composer.json 에 아래 code를 넣어서 install 시키고 그 이후에 require 하니 되네요.

      “repositories”: {
      “packagist”: { “url”: “https://packagist.org”, “type”: “composer” }
      }

      아래 link 참조하세요
      http://vijayan.tomrain.com......on/
    • 헬프미
      daniel님 저도 그러네요 ㅠㅠ
    • daniel
      composer install 을 입력하니 RepositorySecurityException 이 발생합니다. XXXX.json 이 signature 와 mismatch 라고 나오는데.. 뭘 어찌 해야 할까요 ??
    • 샤핀
      도움이 되서 다행입니다. 화이팅입니다. ^^
      대화보기
      • 차암취
        오류때문에 고생중이였는데 해결했습니다. 감사합니다.
        대화보기
        • egoing
          우선 해당 메시지를 구글에서 검색해보시고 비슷한 문제가 있는지 확인 한번 해보시겠어요?
          대화보기
          • 일상
            composer 설치를 하고
            composer install을 하면 Your requirements could not be resolved to an installable set of packages.
            에러가뜨면서 라이브러리가 설치가 않되네요 .
          • 오잉
            cmd 창에서 composer install 명령어 해당 경로에서 똑바로 쳤는데

            아래 처럼 이런 메세지가 뜨는 건 왜이런걸까요..??

            "내부또는외부명령 실행할수있는프로그램 또는배치파일이아닙니다."
          • 깜신
            정말 대단하십니다. 여기서 코딩 공부를 시작해서. 최근에 PHP로 웹서비스를 개발하던 중(물론, 아마추어 수준입니다만)에 composer에 궁금증이 생겨서 검색을 하고, 결국 다시 이고잉님의 품으로 돌아오고 말았군요. 감사의 글을 적지 않을 수 없네요.ㅎㅎ
          • 유재헌
            C:\ProgramData\ComposerSetup
            이곳을 한번 확인해보시기 바랍니다.
          • 안기정
            php 설치됀곳에 있어요
            대화보기
            • 송사리
              비트나미말고 따로 다 설치해서 사용중이긴 한데..
            • 송사리
              왜 설치는 제대로 되는데 composer.phar 파일이 안생길까요
            • nanlxiang@aliyun.com
              composer을 설치하는데 shell menus 가 선택으로 나오네요. shell menus를 설치하여야 하나요 ?
            • 샤핀
              도움이 되셨다니 다행이네요. 열공 하시기 바랍니다 ^^
              대화보기
              • 행복부자
                샤핀님 감사합니다. 댓글 덕분에 ... 콤포저 설치 완료했습니다. 감사합니다.
                대화보기
                • sssssqew
                  저도 중간중간 아래 댓글들과 같은 문제가 발생해서 구글링을 통해 1시간이 걸려 해결했습니다. ㅎㅎ

                  에러가 발생하면 에러를 잘 읽어보라던 어떤 상사분의 조언이 머릿속에 남아 실천하고 있습니다^^
                • 샤핀
                  강좌를 더 수강하다 보니 저의 경우 이런 문제 발생했던 원인을 알거 같습니다.
                  설정 강좌 중 윈도우 설정 강좌를 보면 php.ini
                  php.ini 파일을 지우고 php.ini-development를 이름 변경해서 php.ini로 바꿔서 세팅하는 부분이 있습니다.

                  비욘드컴페어 라는 비교 툴로 확인해 보니 원본 php.ini에는 이런 세팅이 기본적으로 잡혀 있습니다.
                  php.ini-development에는 주석으로 잡혀 있는 상태로 되어 있기 때문에
                  기존 강좌에서 php.ini-development -> php.ini 로 이름변경해서 세팅하시는 분들의 경우
                  의도하지 않게 여기서 애를 먹으실 수 있습니다. ^^;;
                  이상입니다.
                  대화보기
                  • 샤핀
                    강좌 잘 봤습니다. 이고잉님 항상 고맙습니다. ^^
                  • 샤핀
                    Composer 메뉴얼 링크도 깨진 거 같아요. egoing님 수정!? 음!? 부탁 드려요..
                  • 샤핀
                    php.ini 파일에서
                    ; extension_dir = "ext"
                    ; extension=php_openssl.dll
                    이 부분 주석도!! ; 제거해주면 설치가 정상적으로 됩니다.

                    참고로 제가 bitnami 설치한 경로의 ext 폴더를 보면 해당 파일이 위치해 있는 걸 확인하실 수 있습니다.
                    C:\Bitnami\wampstack-5.4.31-0\php\ext\php_openssl.dll 이렇게요

                    저도 window7 환경에서 아래와 같이
                    "PHP Startup: Unable to load dynamic library 'C:php\php_openssl.dll' - 지정된 모듈을 찾을 수 없습니다."
                    에러가 떴었는데요.
                    php.ini 파일에서
                    ;extension=php_openssl.dll 여기서 ; 주석을 제거하면서 한가지 작업을 더 해줘야 되네요.
                    ; extension_dir = "ext" 이 부분에서 ;주석을 제거해주면 설치가 정상적으로 됩니다.

                    egoing님은 강의를 자주 작성하시다 보니 extension_dir = "ext" 이 부분이 이미 제거하신 상태에서 강좌가 진행됬을 수도 있습니다. 저도 하다가 막혀서 이 부분 넘기지 못하고 고생 하다가 구글링하다가 영문이 좀 어려운거 같아서 임의로 이렇게 해보니 설치과정을 넘어가네요.


                    다른 분들은 쉽게 진행하실 수 있게 강좌에 php.ini 파일에서
                    ; extension_dir = "ext" 주석 제거 부분도 삽입해 주시면 좋겠습니다. ^^
                    대화보기
                    • 김태훈
                      강의 잘 듣고 있습니다. ^^
                      window7사용중이고 APMSETUP7을 깔았습니다.
                      APMSETUP7에서 업그레이드하라는 말이 나와서 확인을 누르니 자꾸 APM프로그램이 꺼져서 그냥 놔뒀는데 composer를 깔려니 php가 너무 오래되서 설치가 안된다고 나오네요..
                      APM설치후 php업그레이드하는 방법이 없나요...??
                    • JPARK
                      error: Class 'dflydev\markdown\MarkdownPaser' not found in C:\Bitnami\wampstack-5.4.29-0\apache2\htdocs

                      이런 에러가 나타나는데 왜 그런것일까요??
                    • egoing
                      웹호스팅에서는 깔기 어려울 수 있습니다. 컴포저는 쉽게 설치할 수 있도록 도와주는 도구일 뿐이니까 없어도 설치 가능합니다.
                      대화보기
                      • Daniel
                        웹호스팅 서비스를 이용하는 사람은 컴포저 어떻게 까나요? 그리고 컴포저란건 결국 js에 비유하자면
                        d3.js, three.js, jQuery같은 라이브러리 개념이 맞나요? 쓰면 편하고 안써도 상관은 없는 그런... 맞나요?
                        늘 고생 많으십니다(__)
                      • egoing
                        아래 설정 동영상을 한번 보시고 설정을 변경하시는 것이 도움이 되지 않을까 싶습니다.
                        http://opentutorials.org......113
                        대화보기
                        • Tikiman
                          밑에 링크를 보고
                          php.ini 에서 ;extension=php_openssl.dll 을 찾아 앞의 ;를 제거 했습니다.
                          영맹이라 잘못 이해 했는지는 몰라도... 그렇게 설정을 바꾼뒤 실행을 하니
                          composer install 시에

                          "PHP Startup: Unable to load dynamic library 'C:php\php_openssl.dll' - 지정된 모듈을 찾을 수 없습니다."

                          라고 메세지창이 나오네요 실제로 저경로는 없구요...
                        • egoing
                          검색해보니까 php에 openssl 옵션을 켜라고 되어 있네요.
                          http://stackoverflow.com......tps
                          대화보기
                          • dubi
                            package를 인스톨하려고 cmd 창에서 composer install를 하면 밑에 에러가 발생하고 패키지가 생성되지 않습니다. 이 에러는 어떻게 처리해야하나요?

                            you must enable the openssl extension to download files via https
                          • 김원진
                            컴퍼져 설치하는 곳이 어디인지 모르겠습니다.. ㅜ
                          • 져니
                            강의 정말정말 감사히 듣고 열심히 따라하고 있습니다:)
                            그런데 설치도중
                            composer.phar은 php폴더내에 설치가 됐습니다.

                            The openssl extension is missing, which means that secure HTTPS transfers are impossible.
                            If possible you should enable it or recompile php with --with-openssl

                            이런 에러가 뜨면서 openssl 주석을 제거하고 서버 재시동 했는데도 에러가 뜹니다 ㅠㅠ 어떻게 해야하나요?
                          • Badger
                            그럼 자비에서 표현하자면 markdownPaser.transformmarkdown(Hello Word) 라고 표현 된다는 말씀인가요? 즉 자비에서 . 이 php 에서는 ->로 표현 된다는 말씀같이들리는데.....제가 해석 한 것이 만나요?
                          • egoing
                            $markdownPaser 객체의 메소드 transformmarkdown의 첫번째 인자가 Hello world라는 문자열이라는 의미입니다. 객체 지향을 공부하셔야 파악하실 수 있는 개념입니다. 지금은 몰라도 되는 문법이라고 생각해주세요.
                            대화보기
                            • Badger
                              echo $markdownParser->transformMarkdown("#Hello World");
                              ?>
                              위에 코드에서 -> 무슨 의미인가요?
                            버전 관리
                            egoing
                            현재 버전
                            선택 버전
                            graphittie 자세히 보기