Làm cách nào để cài đặt các gói PHP của Composer mà không có Composer?


97

Tôi đang cố gắng cài đặt API Coinbase PHP nhưng nó yêu cầu Trình soạn thảo:

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

Tôi đang tìm kiếm một giải pháp PHP phổ biến (có lẽ là một chức năng) để cho phép tôi cài đặt các gói trình tổng hợp trực tiếp vào máy chủ của mình mà không cần phải sử dụng Trình soạn thảo.

Tôi nghĩ rằng các nhà phát triển của Composer tin rằng họ đang giúp đỡ mọi người, nhưng thực sự có hàng ngàn nhà phát triển mới bắt đầu đang bị 'rào cản của Composer' khóa việc học phát triển web.

Sẽ thực sự hữu ích nếu có một giải pháp linh hoạt hoặc một số cách tiếp cận mà chúng ta có thể cài đặt mà không cần Composer? Tôi có thể làm cái này như thế nào?

Vui lòng không trả lời bằng một số bình luận châm biếm . Có những người không muốn sử dụng Composer và tôi không hiểu tại sao chúng ta nên đưa chúng ta vào một phần mềm cụ thể của bên thứ ba để phát triển web.


6
Tất cả các gói sử dụng composer vẫn chỉ là các thư mục chứa đầy các tệp PHP. Bạn có thể cài đặt chúng giống hệt như cách bạn đã làm trước khi có nhà soạn nhạc: sao chép chúng ở đâu đó và includecác tệp.
deceze

2
Cài đặt dựa trên trình soạn thảo ngụ ý chạy một lệnh duy nhất, hầu như luôn được hiển thị trong trang chủ của gói. Tôi hiểu rằng có những trường hợp sử dụng để cài đặt thủ công nhưng nó sẽ không bao giờ là phương pháp dễ dàng hơn.
Álvaro González

19
@ ÁlvaroGonzález Tôi không thể không đồng ý với nhận xét của bạn nhiều hơn. Vui lòng xem: okmaya.com/2016/03/13/package-managers-hate-npm-composer . Tôi không nói rằng các trình quản lý gói không tuyệt vời đối với một số người và dự án - chỉ là chúng thường đòi hỏi nhiều công việc và nỗ lực hơn là chỉ đơn giản là thả một thư mục trong dự án của bạn và tham khảo nó.
dallin

3
@dallin Mặc dù có tiêu đề, nhưng bài viết đó chủ yếu là một lời ca ngợi về các khuôn khổ và chuỗi công cụ được thiết kế quá mức hiện đại (một vấn đề của riêng nó). Nếu bạn muốn cài đặt một thư viện có 30 phần phụ thuộc, việc bỏ Composer thành 30 phần cài đặt thủ công có thể khiến bạn cảm thấy đàn ông hơn hoặc bất cứ điều gì, nhưng tôi sẽ không gọi nó là dễ dàng hơn, ít hơn nhiều đối với các nhà phát triển mới bắt đầu.
Álvaro González

9
@ ÁlvaroGonzález Thành thật mà nói, tôi chưa phải cài đặt một thư viện với 30 phụ thuộc (nghe có vẻ kém thiết kế tbh). Tôi chắc rằng đó sẽ là một cơn ác mộng nếu không có trình quản lý gói. Kinh nghiệm của tôi mặc dù tương tự như bài báo đó. Tôi thường cố gắng cài đặt một thứ gì đó có một hoặc hai phần phụ thuộc và cuối cùng phải dành thời gian khắc phục sự cố với trình quản lý gói trước khi tôi bắt đầu viết mã. Các thông báo lỗi quá thường xuyên và cực kỳ mơ hồ và bí truyền. Điều này có thể minh họa cảm xúc của tôi tốt hơn: imgur.com/r/webdev/bO7oTf6 . Kinh nghiệm của tôi với PM cũng tương tự.
dallin

Câu trả lời:


38

Các composer.jsontập tin liệt kê các phụ thuộc. Trong ví dụ của bạn:

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

Sau đó, bạn phải tìm các gói tương ứng trong trang packagist . Lặp lại quy trình tương tự cho mỗi phần phụ thuộc: tìm các phần phụ thuộc bổ sung trong các composer.jsontệp tương ứng của chúng và tìm kiếm lại.

Cuối cùng khi bạn đã có danh sách đầy đủ các gói cần thiết, bạn chỉ cần cài đặt tất cả từng gói một. Đối với hầu hết các phần, vấn đề chỉ là thả các tệp vào đâu đó trong thư mục dự án của bạn. Nhưng bạn cũng phải đảm bảo rằng PHP có thể tìm thấy các lớp cần thiết. Vì bạn không sử dụng trình tải tự động của Composer, bạn cần thêm chúng vào trình tải tự động tùy chỉnh của riêng mình. Bạn có thể tìm ra thông tin từ các composer.jsontệp tương ứng , ví dụ:

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

Nếu bạn không sử dụng trình nạp tự động lớp, bạn sẽ cần tìm ra các require_oncecâu lệnh riêng lẻ . Có thể bạn sẽ cần nhiều lần thử và sai vì hầu hết các tác giả thư viện sẽ không quan tâm đến việc ghi lại điều đó.

Ngoài ra, và đề phòng có sự nhầm lẫn về điều này:

  • Composer có trình cài đặt GUI chính thức cho Windows và quy trình cài đặt dòng lệnh sao chép và dán cho tất cả các nền tảng.
  • Composer có thể được chạy cục bộ và đầu ra của nó chỉ được tải lên ở nơi khác. Bạn không cần SSH trong lưu trữ được chia sẻ của mình.
  • Lệnh cần thiết để cài đặt một thư viện có thể được sao chép và dán từ trang web gói — ngay cả khi người bảo trì gói không quan tâm đến việc ghi lại nó, packagist.org sẽ tạo nó theo mặc định.

Composer không phải là hoàn hảo và nó không phù hợp với tất cả các trường hợp sử dụng, nhưng khi cài đặt một thư viện dựa vào nó, nó chắc chắn là lựa chọn thay thế tốt nhất và nó khá ổn.


Tôi đã kiểm tra các câu trả lời khác sau của tôi. Chúng chủ yếu thuộc hai loại:

  1. Cài đặt thư viện và viết tập lệnh tải xuống tùy chỉnh với nó
  2. Sử dụng giao diện trực tuyến dựa trên web cho Composer

Trừ khi tôi thiếu thứ gì đó, không ai trong số họ giải quyết các khiếu nại mà OP bày tỏ:

  • Đường cong học tập
  • Sử dụng phần mềm của bên thứ ba
  • Khả năng phát triển ngay trên máy chủ (sử dụng SSH, tôi đoán là)
  • Cây phụ thuộc sâu tiềm ẩn

23
Nếu điều này không thuyết phục mọi người chỉ sử dụng nhà soạn nhạc, sẽ không có gì…
lừa dối

3
Trước hết, phiên bản hiện tại của composer cần proc_open () mà không phải ở đâu cũng có. Và có những vấn đề khác nữa. Mặc dù tôi đồng ý rằng nhà soạn nhạc có giá trị của nó, tôi luôn biết rằng một ngày nào đó tôi sẽ gặp phải vấn đề và ngày hôm nay là như vậy. Tôi vẫn chưa tìm ra cách cài đặt thư viện được chia sẻ cho hơn 50 ứng dụng khách (sử dụng Composer).
karvonen

7
Tôi ước các nhà phát triển thư viện sẽ ngừng sử dụng trình soạn nhạc. Đó là điều không nên trong bất kỳ môi trường sản xuất nghiêm túc nào. Những người ẩn đằng sau 'chỉ sử dụng nhà soạn nhạc' không biết họ đang làm gì ngay từ đầu.
IncredibleHat

108

Bạn có thể thử https://php-download.com/ có thể giúp bạn tải xuống tất cả các phụ thuộc hầu hết thời gian cùng với vendorthư mục. Nó hứa hẹn nhà soạn nhạc không bắt buộc. Đã tự mình thử. Nó tìm và tạo tất cả các thư mục cần thiết và nén nó để tải xuống. Hoạt động hoàn hảo !!


4
Hoạt động hoàn hảo! Cảm ơn !!
Yousphere

23
Đây phải là câu trả lời được chấp nhận. Nó chỉ làm những gì nhà soạn nhạc làm và sau đó trả về một zip

Nó không có tất cả các thư viện từ github. Khi tôi cố gắng sử dụng cái này, ví dụ: github.com/mgp25/Instagram-API nó nói rằng nó không thể tìm thấy nó.
Andi Hamolli

3
Câu trả lời ở trên cho biết rất nhiều bước phải làm trong khi trang web giảm bớt nó thành 1 bước có thể tải xuống. Tôi không phải là một lập trình viên chuyên nghiệp nhưng PHP cho phép tôi làm những việc điên rồ dễ dàng đến mức tôi chưa bao giờ cần học SSH hoặc trình soạn nhạc hoặc gói .... Những thứ này dành cho những người yêu thích và chuyên nghiệp .... Trang web đã loại bỏ hạn chế đó .. ... tôi tin rằng tất cả những người bỏ phiếu tán câu trả lời của tôi tìm thấy trang web làm nó tốt hơn so với nhà soạn nhạc ..... Nếu bạn có thể làm điều đó .... nó sẽ giúp tất cả các lập trình viên đam mê phi
jahajee.com

4
@ ÁlvaroGonzález. Cá nhân tôi không quan tâm nếu nhà soạn nhạc biên soạn một dự án trên một số máy khác. Tôi chỉ không có đặc quyền cài đặt trên tất cả các máy tôi làm việc và đôi khi tôi cần tải thư viện trên máy tính windows mà không cần chạy tệp exe. Tôi đánh giá cao nhà soạn nhạc, tôi không thể luôn luôn sử dụng nó, điều đó thật khó chịu nếu không có trang web này để biên dịch trước cho tôi.
Altimus Prime

9

Tôi đang sử dụng dịch vụ lưu trữ được chia sẻ cho một trang web và không thể thực hiện các lệnh ở đó. Ngoài việc chạy trình soạn nhạc thông qua yêu cầu tập lệnh php mà tôi yêu cầu qua trình duyệt, tôi thường sử dụng quy trình làm việc này:

  • Đảm bảo rằng bạn đã cài đặt php cục bộ.
  • Tạo thư mục trên máy tính để bàn.
  • tải xuống composer.phar từ https://getcomposer.org/download/ (dưới tiêu đề * Tải xuống thủ công ) và đặt nó vào thư mục.
  • tạo một tệp composer.json dán vào đó các nội dung sau

     {
         "require": {
             "coinbase/coinbase": "~2.0"
         }
     }
  • Duyệt đến thư mục với shell bạn chọn (bash, git-bash, cmd, windows bash)

  • kiểu php composer.phar update ảnh chụp màn hình của đầu ra bash
  • Tải thư mục của nhà cung cấp lên máy chủ web của bạn thông qua ftp hoặc bất kỳ máy chủ nào bạn sử dụng.
  • đưa vào dự án php của bạn nơi bạn tải các thư viện của mình (sửa đổi đường dẫn đến nơi bạn đã tải lên dir của nhà cung cấp để nó sẽ bao gồm tệp autoload đó)

    require_once('vendor/autoload.php');

Bằng cách này, bạn nhận được lợi ích của việc quản lý sự phụ thuộc và bạn không phải bao gồm tất cả hàng triệu tệp theo cách thủ công và tải xuống tất cả các phần phụ thuộc theo cách thủ công và cập nhật chúng cũng dễ dàng như nhập php composer.phar updatevà sau đó thay thế dir của nhà cung cấp trên máy chủ của bạn bằng cái mới.


4

Tôi phải thực hiện việc này cho một máy chủ FTP mà tôi không có quyền truy cập SSH. Trang web được liệt kê ở đây đã hoạt động, sau đó tôi nhận ra rằng bạn chỉ có thể thực hiện cài đặt trình soạn nhạc trên máy chủ của riêng mình (sử dụng phiên bản PHP của mục tiêu của bạn), sau đó sao chép tất cả các tệp.


1
Đó phải là câu trả lời. Làm việc hoàn hảo cho tôi,
Michael Walter

1
Bạn có thể vui lòng giải thích câu trả lời của bạn tốt hơn? Xin lỗi vì sự ngu ngốc của tôi.
Andi Hamolli

1
@IchHabsDrauf Về cơ bản, anh ấy đề cập đến việc sử dụng trình soạn nhạc (ở phần này, nó không thực sự là trình chiếu phim) và sao chép các tệp tin vào môi trường sản xuất. Nhận xét của tôi về điều đó sẽ là có thể có những người không có nhà soạn nhạc trên môi trường phát triển, vì vậy đây không thực sự là một nhà cảm xạ.
Gall Annonim

3

Đây không phải là giải pháp cuối cùng nhưng đối với tôi, nó đã giúp ích rất nhiều cho hầu hết các trường hợp: https://github.com/Wilkins/composer-file-loader

Cho phép bạn tải tệp composer.json giống như cách mà nhà soạn nhạc làm. Điều này cho phép bạn tải tệp composer.json mà không cần trình tổng hợp (vì vậy về mặt lý thuyết, PHP 5.2 là đủ)

Tôi biết câu hỏi đã cũ nhưng tôi hy vọng nó sẽ giúp ích cho ai đó.


1

Một giải pháp thay thế phù hợp với tôi (vì php-download đã ngừng hoạt động) có thể được thực hiện bằng cách tạo trình tải xuống trình soạn nhạc cục bộ nhỏ của riêng bạn.

  1. Tải xuống và cài đặt XAMPP cục bộ: https://www.apachefriends.org/index.html
  2. Tải xuống và cài đặt trình soạn nhạc cục bộ: https://getcomposer.org/download/
  3. Mở commandprompt, điều hướng để nói c:\tempvà chỉ cần nhập sự phụ thuộc của nhà soạn nhạc, ví dụ:composer require league/oauth2-client
  4. Sao chép các tệp từ c:\tempthư mục của bạn vào máy chủ lưu trữ web của bạn bằng chương trình FTP
  5. Thêm cái này vào đầu php của bạn: require("vendor/autoload.php");

Làm việc như người ở! Cảm ơn vì điều này :)
ajmeese7 Ngày
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.