Composer없이 Composer PHP 패키지를 설치하려면 어떻게해야합니까?


97

Coinbase PHP API를 설치하려고하는데 Composer가 필요합니다.

https://github.com/coinbase/coinbase-php

Composer를 사용하지 않고도 서버에 직접 composer 패키지를 설치할 수있는 범용 PHP 솔루션 (아마도 함수)을 찾고 있습니다.

Composer 개발자들은 그들이 사람들을 돕고 있다고 생각하지만 실제로는 'Composer 장벽'으로 인해 웹 개발을 배우지 못하는 초보 개발자가 수천 명 있습니다.

Composer없이 설치할 수있는 유연한 솔루션이나 접근 방식이 있다면 정말 도움이 될까요? 어떻게 할 수 있습니까?

비꼬는 말로 응답하지 마십시오 . Composer를 사용하고 싶지 않은 사람들이 있고 웹 개발을 위해 특정 타사 소프트웨어에 묶여 있어야하는 이유를 모르겠습니다.


6
composer를 사용하는 모든 패키지는 여전히 PHP 파일로 가득 찬 디렉토리에 불과합니다. composer가 존재하기 전에했던 것과 똑같은 방식으로 설치할 수 있습니다 include. 어딘가에 복사하고 파일을 복사합니다 .
deceze

2
Composer 기반 설치는 거의 항상 패키지 홈 페이지에 표시되는 단일 명령 실행을 의미합니다. 수동 설치에 대한 사용 사례가 있다는 것을 이해하지만 결코 더 쉬운 방법은 아닙니다.
Álvaro González 2011

19
@ ÁlvaroGonzález 나는 귀하의 의견에 더 동의하지 않을 수 없습니다. 참조 : okmaya.com/2016/03/13/package-managers-hate-npm-composer . 패키지 관리자가 일부 사람과 프로젝트에 적합하지 않다고 말하는 것이 아닙니다. 단순히 프로젝트에 폴더를 추가하고 참조하는 것보다 더 많은 작업과 노력이 필요한 경우가 많습니다.
댈린

3
@dallin 제목에도 불구하고이 기사는 대부분 현대의 과잉 엔지니어링 된 프레임 워크와 도구 체인 (자체 문제)에 대한 폭언입니다. 30 개의 종속성이있는 라이브러리를 설치하려는 경우 30 개의 수동 설치를 선호하는 Composer를 덤프하면 더 남자 다운 느낌이들 수 있습니다.하지만 초보자 개발자에게는 훨씬 더 쉽지 않습니다.
Álvaro González

9
@ ÁlvaroGonzález 솔직히 말해서 저는 30 개의 의존성을 가진 라이브러리를 설치할 필요가 없었습니다. 패키지 관리자가 없으면 악몽이 될 것입니다. 내 경험은 그 기사와 비슷합니다. 일반적으로 하나 또는 두 개의 종속성이있는 무언가를 설치하려고 시도하고 코딩을 시작하기 전에 패키지 관리자로 문제를 해결하는 데 시간을 소비해야합니다. 오류 메시지는 너무 빈번하고 믿을 수 없을 정도로 모호하고 난해합니다. 이것은 내 감정을 더 잘 보여줄 수 있습니다 : imgur.com/r/webdev/bO7oTf6 . PM과의 경험은 비슷했습니다.
dallin

답변:


38

composer.json파일 종속성을 보여줍니다. 귀하의 예에서 :

"require": {
    "php": ">=5.5.0",
    "guzzlehttp/guzzle": "^6.0",
    "psr/http-message": "^1.0",
    "psr/log": "^1.0"
},

그런 다음 packagist 사이트 에서 해당 패키지를 찾아야합니다 . 각 종속성에 대해 동일한 프로세스를 반복 composer.json하십시오. 해당 파일 에서 추가 종속성을 찾고 다시 검색하십시오.

마지막으로 필요한 패키지의 전체 목록을 얻었을 때 모두 하나씩 설치하기 만하면됩니다. 대부분의 경우 프로젝트 디렉토리 어딘가에 파일을 놓기 만하면됩니다. 그러나 PHP가 필요한 클래스를 찾을 수 있는지도 확인해야합니다. Composer의 자동 로더를 사용하지 않기 때문에 사용자 정의 자동 로더에 추가해야합니다. 각 composer.json파일 에서 정보를 파악할 수 있습니다 . 예 :

"autoload": {
    "psr-4": { "Coinbase\\Wallet\\": "src/" }
},

클래스 자동 로더를 사용하지 않는 경우 개별 require_once명령문 을 파악해야 합니다. 대부분의 라이브러리 작성자는 문서화에 관심이 없기 때문에 많은 시행 착오가 필요할 것입니다.

또한 이것에 대해 혼란이있을 경우를 대비하여 :

  • Composer에는 Windows 용 공식 GUI 설치 프로그램과 모든 플랫폼에 대한 복사 및 붙여 넣기 명령 줄 설치 절차가 있습니다.
  • Composer는 로컬에서 실행될 수 있으며 출력은 다른 곳에 업로드됩니다. 공유 호스팅에는 SSH가 필요하지 않습니다.
  • 라이브러리를 설치하는 데 필요한 명령은 패키지 웹 사이트에서 복사하여 붙여 넣을 수 있습니다. 패키지 관리자가 문서화하는 데 관심이 없더라도 packagist.org에서 기본적으로 생성합니다.

Composer는 완벽하지 않고 모든 사용 사례에 적합하지는 않지만, 이에 의존하는 라이브러리를 설치할 때 의심 할 여지없이 최상의 대안이며 상당히 괜찮은 대안입니다.


내 뒤에 오는 다른 답변을 확인했습니다. 주로 두 가지 범주로 나뉩니다.

  1. 라이브러리를 설치하고이를 사용하여 사용자 지정 다운로드 스크립트 작성
  2. Composer 용 온라인 웹 기반 인터페이스 사용

내가 뭔가를 놓치고 있지 않는 한, 그들 중 누구도 OP가 표현한 불만을 해결하지 않습니다.

  • 학습 곡선
  • 타사 소프트웨어 사용
  • 서버에서 바로 개발할 수있는 가능성 (SSH를 사용하는 것 같습니다)
  • 잠재적으로 깊은 종속성 트리

23
이것이 모든 사람이 작곡가를 사용하도록 설득하지 못한다면 아무것도 할 수 없습니다…
속임수

3
우선 현재 버전의 composer에는 모든 곳에서 사용할 수없는 proc_open ()이 필요합니다. 그리고 다른 문제도 있습니다. 작곡가의 장점에 동의하지만 언젠가는 문제에 부딪 힐 것이라는 것을 항상 알고 있었는데 오늘은 그랬습니다. 50 개 이상의 클라이언트 응용 프로그램 (Composer 사용)을위한 공유 라이브러리를 설치하는 방법을 아직 파악하지 못했습니다.
karvonen

7
도서관 개발자가 작곡가를 사용하지 않기를 바랍니다. 심각한 프로덕션 환경에서는 절대 사용하지 마십시오. '단지 작곡가 만 사용'뒤에 숨어있는 사람들은 애초에 자신이 무엇을하고 있는지 전혀 모릅니다.
IncredibleHat

108

당신이 시도 할 수 https://php-download.com/ 당신과 함께 대부분의 시간을 모든 의존성을 다운로드 할 수 있도록 할 수있는 vendor폴더를. 작곡가가 필요하지 않다고 약속합니다. 직접 시도했습니다. 필요한 모든 폴더를 찾아서 생성하고 다운로드를 위해 압축합니다. 완벽하게 작동합니다!


4
완벽하게 작동합니다! 감사 !!
Yousphere

23
이것은 받아 들여진 대답이어야합니다. composer

github의 모든 라이브러리가있는 것은 아닙니다. 예를 들어 github.com/mgp25/Instagram-API 를 사용하려고하면 찾을 수 없다는 메시지가 표시됩니다.
Andi Hamolli 2011

3
위의 대답은 웹 사이트에서 다운로드 가능한 단계를 쉽게 수행하는 동안 수행해야 할 많은 단계를 알려줍니다. 저는 전문적으로 프로그래머는 아니지만 PHP를 사용하면 너무 쉽게 미친 일을 할 수 있으므로 SSH 나 작곡가 또는 패키지를 배울 필요가 없었습니다. .... 이들은 괴짜와 전문가를위한 것입니다. .... 웹 사이트는 이러한 제한을 제거했습니다. ... 나는 내 대답을 찬성 한 모든 사람들이 웹 사이트가 작곡가보다 더 낫다고 생각한다고 믿는다 ..... 그렇게 할 수 있다면 .... 그것은 괴짜 프로그래머가 아닌 모든 프로그래머에게 도움이 될 것입니다
jahajee.com

4
@ AlvaroGonzález. 개인적으로 작곡가가 다른 컴퓨터에서 프로젝트를 컴파일하는지는 신경 쓰지 않습니다. 작업하는 모든 컴퓨터에 대한 설치 권한이 없으며 때로는 exe 파일을 실행하지 않고 Windows 컴퓨터에 라이브러리를 가져와야합니다. 작곡가에게 감사합니다. 항상 사용할 수는 없었습니다.이 사이트가 나를 위해 미리 컴파일하지 않고서는 실망 스러웠습니다.
Altimus Prime 2018

9

웹 사이트에 공유 호스팅을 사용하고 있는데 거기에서 명령을 실행할 수 없습니다. 브라우저를 통해 요청하는 php 스크립트 요청을 통해 composer를 실행하는 것 외에도 일반적으로 다음 워크 플로를 사용합니다.

  • PHP가 로컬에 설치되어 있는지 확인하십시오.
  • 데스크탑에 디렉토리를 만드십시오.
  • https://getcomposer.org/download/(*Manual Download 헤더 아래) 에서 composer.phar를 다운로드 하여 디렉토리에 배치합니다.
  • composer.json 파일을 다음 내용으로 붙여 넣으십시오.

     {
         "require": {
             "coinbase/coinbase": "~2.0"
         }
     }
  • 선택한 쉘 (bash, git-bash, cmd, windows bash)이있는 디렉토리를 찾습니다.

  • 유형 php composer.phar update bash 출력 스크린 샷
  • ftp 또는 사용하는 메커니즘을 통해 공급 업체 디렉토리를 웹 서버에 업로드합니다.
  • 라이브러리를로드하는 PHP 프로젝트에 포함 (공급 업체 디렉토리를 업로드 한 경로를 수정하여 해당 자동로드 파일을 포함)

    require_once('vendor/autoload.php');

이렇게하면 종속성 관리의 이점을 얻을 수 있고 수많은 파일을 수동으로 포함하고 모든 종속성을 수동으로 다운로드 할 필요가 없습니다. 업데이트는 php composer.phar update서버의 공급 업체 디렉토리를 입력 한 다음 새로운.


4

SSH 액세스 권한이없는 FTP 서버에 대해이 작업을 수행해야했습니다. 여기에 나열된 사이트가 작동하고 나서 자신의 서버에 작곡가 설치를 수행 한 다음 (대상의 PHP 버전을 사용하여) 모든 파일을 복사 할 수 있다는 것을 깨달았습니다.


1
그게 답이되어야합니다. 나를 위해 완벽하게 일
마이클 월터

1
대답을 더 잘 설명해 주시겠습니까? 내 어리 석음에 대해 죄송합니다.
Andi Hamolli 2011

1
@IchHabsDrauf 기본적으로 그는 작곡가 (이 부분에서는 실제로 anwser가 아님)를 사용하고 파일을 프로덕션 환경에 복사하는 것보다 좋습니다. 그것에 대한 내 의견은 아마도 개발 환경에 작곡가가없는 사람들이있을 수도 있다는 것입니다. 따라서 이것은 실제로 anwser가 아닙니다.
Gall Annonim

3

이것은 궁극적 인 해결책은 아니지만 대부분의 경우에 큰 도움이되었습니다 : https://github.com/Wilkins/composer-file-loader

composer가하는 것처럼 composer.json 파일을로드 할 수 있습니다. 이렇게하면 composer없이 composer.json 파일을로드 할 수 있습니다 (이론적으로 PHP 5.2이면 충분합니다).

나는 질문이 오래되었다는 것을 알고 있지만 누군가에게 도움이되기를 바랍니다.


1

나를 위해 일했던 대체 솔루션 (php-download가 다운 된 이후)은 자신의 작은 로컬 작곡가 다운로더를 만들어서 수행 할 수 있습니다.

  1. XAMPP를 로컬로 다운로드하여 설치 하십시오 : https://www.apachefriends.org/index.html
  2. Composer를 로컬로 다운로드하여 설치 하십시오 : https://getcomposer.org/download/
  3. 명령 c:\temp프롬프트 를 열고 말로 이동 한 다음 작성기 종속성을 입력하기 만하면됩니다. 예를 들면 다음과 같습니다.composer require league/oauth2-client
  4. c:\tempFTP 프로그램을 사용하여 폴더에서 웹 호스트로 파일 복사
  5. 이것을 PHP 상단에 추가하십시오. require("vendor/autoload.php");

매력처럼 일했다! 감사합니다 :)
ajmeese7
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.