선생님을 위한 프로그래밍 수업

Composer

토픽 선생님을 위한 프로그래밍 수업 > 웹 애플리케이션 만들기 > PHP
고급 내용에 속합니다. 후속 토픽을 보신 후에 나중에 보셔도 됩니다.

확장기능 관리자

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. 드림보이
    2022.01.18. Composer 파트 수강완료
  2. jeisyoon
    2021.07.25 Composer - OK
  3. psmqdt
    composer.json
    {
    "require": {
    "michelf/php-markdown": "1.*"}}

    3.php
    <?php
    require ...
    use Michelf\MarkdownExtra;
    $markdownParser = new MarkdownExra;
    echo $markdownParser->transform("#Hello World");
    ?>
  4. 준서
    continue;
    ㅋㅋㅋㅋ
  5. 미댈
    감사합니다! 세번째 동영상에서 헤메고 있었는데 올려주신 소스로 해보니 되네요:D

    composer.json 파일
    {
    "require" : {
    "michelf/php-markdown" : "1.*"
    }
    }

    3.php 파일
    <?php
    require 'vendor/autoload.php';
    use Michelf\Markdown;
    $my_html = Markdown::defaultTransform("#Hello World.");
    echo $my_html;
    ?>
    대화보기
    • 미댈
      감사합니다^^
      php.ini 파일에서
      ; extension_dir = "ext" 주석해제하고
      extension=php_openssl.dll 은 찾아봐도 없길래
      [openssl] 맨 아래 추가했더니 설치되네요
      대화보기
      • goora_hwang
        composer.exe 설치하려고 하니까.. 아래와 같은 메시지가 나오면서 실패를 하네요.

        Script Output:
        The "https://getcomposer.org/versions" file could not be downloaded: SSL operation failed with code 1. OpenSSL Error messages:
        error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed

        그리고 php.ini파일 내에 ;extension=php_openssl.dll는 없고,
        extension=openssl.dll만 주석 해제된 상태로 있는데 혹시 이것이 문제일까요?
      • choon
        감사합니다.
      • 인아
        환경변수까지는 가서 세미콜론뒤에 파일 경로를 넣었는데.. 그래도 composer가 해당 파일경로에서만 실행이 되네요.. 저는 무엇을 잘못한 걸까요..
      • Young-Ki Kim
        저는 php-markdown 1.8.0 버전을 설치했는데 해당 웹 페이지에서 보고 아래와 같이 하니 잘 됩니다.
        =========================================
        <?php
        require 'vendor/autoload.php';
        use Michelf\Markdown;
        $my_html = Markdown::defaultTransform("Hello World.");
        echo $my_html;
        ?>
      • Hyung Jun Choi
        bat파일 만들때 vs code의 콘솔창으로는 안되네요.. cmd창으로 해주세요
      • 돼지
        혹시 라라벨환경에서의 세팅방법인가요???
      • node의 npm과 같은것이군요!!! npm을 사용해봐서 이해가 빨리됬습니다~~ good
      • 맛있는하마
        혹시 컴포저 설치하실때 fbclient.dll 에러 뜨시는 분 있으면 php.ini 가셔서
        extension=php_pdo_firebird.dll
        위에 이걸
        ;extension=php_pdo_firebird.dll
        이렇게 바꿔보세요.
        이게 뭔진 모르겠는데 전 이렇게 해서 설치가 되었네요.
      • 컴포저 웹호스팅
        컴포저를 설치하고 프로젝트를 완성한후에 웹호스팅을 하려고 할때 해당 웹호스팅이 컴포저를 지원하지 않는 경우는 어떤식으로 대응해야 하나요?

        웹서버를 호스팅하는 경우가 아니라면 대부분이 웹호스팅을 이용할텐데 국내 웹호스팅중에 컴포저를 지원하는 곳이 있기는 한가요?
      • ㅇㅇ
        문서를 아무리 봐도 이해를 못 했는데,
        단 20분 투자에 모든 게 이해 됐습니다.
        감사합니다.
      • 이유리
        <?php
        require 'vendor/autoload.php';
        use \Michelf\Markdown;
        $my_text = '## 이거슨 H2 입니다.';
        $my_html = Markdown::defaultTransform($my_text);

        //$MarkdownExtra = new MarkdownExtra;
        //echo $MarkdownExtra->transformMarkdown("#Hello World");//메소드함수,

        //markdown에서 #은 <h1>과 같은 뜻이다.
        ?>
        다른 파일로 해봤는데, 왜 안될까요? 알려주세요..ㅠ
        문자가 출력이 안되네요
      • wlgur
        이상하게 사이트에서 markdown을 검색하면 아무것도 안나오네요
      • 김빠
        저두 이번건 패스 ㅋㅋ
      • 고스트프리
        이번꺼는 3.php에서 막혔네요...
        라이브러리를 다른거를 가져다 쓰니까...
        제대로 작동을 하지 않는거같아요.
        이번꺼는 패스하겠습니다.
      • 정범균
        왜 설치해야되는지 이해가 아직안가는데

        Php 명령어 몇개를 못쓰나요?
      • 양주스타일
        무료 웹호스팅을 사용하고 있습니다. php jwt를 이용해 토큰 인증 방식을 사용하려고 하는데요. 웹호스팅에는 composer설치가 되지 않네요, 다른 방식으로 라이브러리 설치하고 사용 할 수 있는 방법이 있나요??
      • 김준태
        버전이 달라러 그런건지 bat배치파일을 생성안해도 잘되는군요
      • 김세창
        다른 패키지들은 어떻게 사용해야할지 잘 모르겠으나,
        다음강의로 넘어가겠습니다.
        고맙습니다~ ㅎ
      • 쩡찌
        michelf/php-markdown 사용하려니 안되네요...ㅠㅠ
        일단 넘어갑니당 ㅠㅠ
      • funlife
        감사합니다.
      • 주니어개발자
        감사합니다
        Composer에 대한 이해 없이 라라벨을 사용하려다 보니 이해 안가는 부분이 많았는데 많은 도움 됬습니다 !
      • 껄렁쇠
        이고잉 형님

        감사합니다. 꾸벅~!
      • 랑랑
        그냥 php설치부터 다시해서 차근차근 따라하다 보면 됩니다 이건 확실하네요

        만약 이고잉님이 올려놓으신 composer.json코드를 복/붙 했는데 안된다면

        그대로 따라입력한뒤 실행해 보세요 저는그렇게 하니까 됐네요.
      • 군구마
        여러 문서를 봤어도 헤깔렸는데.
        짧은 강의 한편으로 정리되었습니다.
        매우~~ 감사합니다.
      • 신입1
        감사해요
      • Jinny
        덕분에 해결했습니다 감사합니다...ㅠㅠ
        대화보기
        • 보보
          컴포저가 왜 강력한지 이 강의를 보니 조금은 알겠네요.ㅎ
        • 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
                이곳을 한번 확인해보시기 바랍니다.