source

Composer를 사용하지 않고 Composer PHP 패키지를 설치하려면 어떻게 해야 합니까?

nicesource 2023. 1. 8. 14:32
반응형

Composer를 사용하지 않고 Composer PHP 패키지를 설치하려면 어떻게 해야 합니까?

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

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

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

Composer의 개발자들은 자신들이 사람들을 돕고 있다고 믿지만, 실제로 수천 명의 초보 개발자들이 'Composer barrier'로 인해 웹 개발을 배우지 못하고 있습니다.

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

비꼬는 투로 대답하지 마세요.Composer를 사용하지 않으려는 사람들이 있는데, 웹 개발을 위해 특정 서드파티 소프트웨어를 사용해야 하는 이유를 알 수 없습니다.

https://php-download.com/ 를 사용해 주세요.이것에 의해서, 대부분의 경우, 모든 의존 관계를 다운로드 할 수 있습니다.vendor가 필요하지않다는 것을 합니다.작곡가가 필요하지 않다는 것을 약속합니다.를 모두 합니다.필요한 모든 폴더를 검색 및 생성하고 다운로드할 수 있도록 압축합니다.★★★★★★★★★★!!

파일에는 의존관계가 나열됩니다.이 예에서는 다음과 같습니다.

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

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

필요한 패키지의 완전한 리스트를 최종적으로 입수하면, 1개씩 인스톨 할 필요가 있습니다.대부분의 경우 프로젝트 디렉토리의 어딘가에 파일을 드롭하는 것만으로 끝납니다.그러나 PHP가 필요한 클래스를 찾을 수 있는지도 확인해야 합니다.Composer의 자동 로더를 사용하지 않으므로 사용자 정의 자동 로더에 추가해야 합니다.의 사연에서 알 수.composer.json일 、 : :

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

않을 인 오토로더를 .require_once★★★★★작성자는 하는 것에 치 않기 하게 될 입니다.대부분의 라이브러리 작성자는 이를 문서화하는 것을 꺼리기 때문에 많은 시행착오가 필요할 것입니다.

또한 이에 대해 혼동이 있을 경우를 대비해 다음과 같이 하십시오.

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

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


나는 내 다음에 온 다른 답들을 확인했어요.주로 두 가지 범주로 나뉩니다.

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

제가 빠뜨린 것이 없는 한, OP에 의해 표명된 불만 사항을 모두 해결할 수 없습니다.

  • 학습 곡선
  • 서드파티 소프트웨어 사용
  • 서버에서 바로 개발할 수 있는 가능성(SSH 사용)
  • 잠재적으로 깊은 종속성 트리

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

  • php가 로컬에 설치되어 있는지 확인합니다.
  • 데스크탑에 디렉토리를 작성합니다.
  • 컴포넌트 다운로드https://getcomposer.org/download/의 par(*수동 다운로드)를 다운로드하여 디렉토리에 저장합니다.
  • composer.json 파일에 다음 내용을 붙여넣습니다.

     {
         "require": {
             "coinbase/coinbase": "~2.0"
         }
     }
    
  • 선택한 셸(bash, git-bash, cmd, windows bash)을 사용하여 디렉토리를 참조합니다.

  • 「」라고 입력합니다.php composer.phar update bash 출력 스크린샷
  • 벤더 디렉토리를 ftp 또는 사용하는 메카닉을 통해 웹 서버에 업로드합니다.
  • 라이브러리를 로드하는 php 프로젝트에 포함(벤더 dir를 업로드한 위치에 대한 경로를 지정하여 자동 로드 파일을 포함)

    require_once('vendor/autoload.php');
    

수 을 모두 파일을 필요가 또, 이러한 은, 「」를 만큼이나 간단합니다.php composer.phar update다음으로 서버의 벤더 dir를 새로운 것으로 교환합니다.

(php-download가 다운된 이후) 나에게 효과가 있었던 대체 솔루션은 당신만의 작은 로컬 작곡가 다운로더를 만드는 것으로 할 수 있다.

  1. XAMPP를 로컬로 다운로드하여 설치합니다.https://www.apachefriends.org/index.html
  2. 컴포저를 로컬로 다운로드하여 설치합니다.https://getcomposer.org/download/
  3. 프롬프트를 ""라고 말합니다.c:\temp '작곡자 와 '작곡자 의존관계는 '작곡자 예를 들어 다음과 같습니다.composer require league/oauth2-client
  4. 을 복사해 .c:\tempFTP 프로그램을 사용하여 웹 호스트에 폴더 보내기
  5. php의 맨 합니다: "hpp"require("vendor/autoload.php");

SSH에 액세스 할 수 없는 FTP 서버에 대해서, 이 작업을 실시할 필요가 있었습니다.여기에 기재되어 있는 사이트가 동작하고 있는 것을 깨달았습니다만, (타겟의 PHP 버전을 사용해) 자신의 서버에 컴포저를 인스톨 해, 모든 파일을 카피할 수 있습니다.

이것은 궁극의 솔루션은 아니지만, 대부분의 경우 큰 도움이 되었습니다.https://github.com/Wilkins/composer-file-loader

composer.json 파일을 composer와 동일하게 로드할 수 있습니다.이를 통해 composer.json 파일을 composer 없이 로드할 수 있습니다(따라서 이론적으로는 PHP 5.2로 충분합니다).

오래된 질문인 건 알지만 누군가에게 도움이 됐으면 좋겠어요.

문제를 분석하다

Composer를 사용하지 않고 의존관계를 설치할 때 문제가 되는 것은 자동 로딩 시스템입니다.

컴포넌트는 어레이 맵을 기반으로 홈메이드 오토로더를 사용합니다.이것은 사실상의 표준입니다.다만, 이 자동 로딩 시스템은, 「다행히」 PSR-4에 준거하고 있지 않습니다.

PSR-4는 PHP에서 클래스를 자동 로드하기 위한 de-ure 표준이므로 자동 로딩에서 벗어날 수 없습니다.둘 중 하나를 사용해야 합니다.

솔루션 제안

이 경우, 이 선명한 PSR-4 오토로더는 수동으로 구성하여VendorClassin a a a a VendorNamespace 「Custom 「Custom」 「Custom」 「Custom」 「Custom」 「Custom」 「Custom」 「Custom」 「 「Code」autoload.php파일을 소스코드의 선두에 둡니다.

실생활의 예

다음 예를 보겠습니다.내게는 비록 신이 기적을 허락하더라도 절대 작곡가를 사용할 수 없고 사용하지 않을 레거시 프로젝트가 있다.이 프로젝트는 명령줄 스크립트용 환상적인 패키지로 개발 속도를 높일 수 있습니다.프로젝트 디렉토리 구조는 다음과 같습니다.

 - src
 - tests
 - vendor (not the Composer's one)

이 패키지의 디렉토리 구조는 다음과 같습니다.

 - examples
 - src
   - Commando
 - tests

제가 필요한 건src폴더입니다.이 폴더를 벤더 폴더에 배치하면 됩니다.커스텀 오토로더는 다음과 같습니다.

// Constants
$base_path = "path\to\my\project";
$autoloader_class = '\vendor\MarcoConsiglio-Wichee\PSR-4-Autoloading\Psr4AutoloaderClass.php';
define("BASE_PATH", str_replace("\\", DIRECTORY_SEPARATOR, $base_path));

// Autoloader
require_once BASE_PATH.'\vendor\MarcoConsiglio-Wichee\PSR-4-Autoloading\Psr4AutoloaderClass.php';

// Init the autoloader.
$package = [
    "nategood\commando" => [
        "namespace" => "Commando",
        "path" => str_replace("\\", DIRECTORY_SEPARATOR, '\vendor\nategood\commando\src\Commando')
    ],
    "kevinlebrun\colors.php" => [
        "namespace" => "Colors",
        "path" => str_replace("\\", DIRECTORY_SEPARATOR, '\vendor\kevinlebrun\colors.php\src\Colors')
    ]
];

// Register namespaces.
$loader = new \PSR4\Psr4AutoloaderClass;
$loader->register();
                      // Namespace                                      // Path to source
$loader->addNamespace($package["nategood\commando"]["namespace"],       BASE_PATH.$package["nategood\commando"]["path"]);
$loader->addNamespace($package["nategood\commando"]["namespace"],       BASE_PATH.$package["nategood\commando"]["path"]."\Util");
$loader->addNamespace($package["kevinlebrun\colors.php"]["namespace"],  BASE_PATH.$package["kevinlebrun\colors.php"]["path"]);

이제 명령어 패키지를 프로젝트 어디에서나 사용할 수 있게 되었습니다.

장점과 단점

이 솔루션을 통해 다음 작업을 수행할 수 있습니다.

  • 커스텀 오토로더를 쉽고 수동으로 빌드할 수 있습니다(필요한 것은,VendorNamespace및 을 검색하는 폴더VendorClass 에는VendorNamespace.
  • 프로젝트 폴더 내 어디에서나 자유롭게 작곡가의 의존관계를 정리할 수 있습니다(또한 프로젝트 폴더 밖에서도 마찬가지입니다.
  • 프로젝트에 있는 대로 컴포저 패키지를 Import합니다(컴포저를 사용하여 로컬로 다운로드하거나 패키지 저장소를 복제). 또는 관련 부분(컴포저 자동 로더가 필요한 composer.json 파일 또는 파일 제거).

단점:

  • 커스텀 오토로더를 수동으로 구축하면 프로젝트에 필요한 모든 의존관계에 대응할 수 있습니다(많지 않은 것이 바람직합니다).
  • 패키지 소스 패스의 실수는 지루하고 짜증날 수 있습니다.
  • 수 없습니다)에서만합니다.A.class.php name (파일명)

언급URL : https://stackoverflow.com/questions/40545795/how-do-i-install-composer-php-packages-without-composer

반응형