如何在没有Composer的情况下安装Composer PHP软件包?

Amy*_*lle 73 php composer-php

我正在尝试安装Coinbase PHP API,但它需要Composer:

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

我正在寻找一个通用的PHP解决方案(可能是一个函数)让我直接将编写器包安装到我的服务器上,而不必使用Composer.

我认为Composer的开发人员相信他们正在帮助人们,但实际上有成千上万的初学者开发者被"作曲家障碍"锁定在学习Web开发之外.

如果有灵活的解决方案或某种方法可以在没有Composer的情况下安装,那真的会有所帮助吗?我怎样才能做到这一点?

请不要回复一些讽刺的评论.有些人不想使用Composer,我不明白为什么我们应该成为特定的第三方软件才能进行Web开发.

jah*_*com 78

您可以尝试https://php-download.com/,它可以帮助您在大多数情况下下载所有依赖项以及vendor文件夹.它承诺作曲家不需要.自己试了一下.它查找并创建所有必需的文件夹并将其拉下以供下载.完美的工作!

  • 这应该是公认的答案.它只是做作曲家所做的,然后返回一个拉链 (17认同)
  • 不幸的是,php-download.com 现在要求您订阅他们的网站才能实际使用它:( (11认同)
  • 工作完美!谢谢 !! (3认同)
  • 上面的答案说明了许多步骤,而网站将其简化为1个可下载的步骤。我不是专业的程序员,但是PHP使我可以轻松地执行疯狂的事情,以至于我不需要学习SSH或作曲家或程序包....这些是针对极客和专业人士的。.该网站消除了该限制.. ...我相信所有支持我的答案的人都会发现该网站比作曲家更好.....如果您能做到....它将帮助所有非极客程序员 (2认同)
  • @ÁlvaroGonzález。就个人而言,我并不在乎作曲家是否在其他机器上编译项目。我只是在所有使用的计算机上没有安装特权,有时我需要在Windows计算机上获取一个库而不运行exe文件。我很欣赏作曲家,我只是不能总是使用它,没有这个网站为我进行预编译就令人沮丧。 (2认同)

Álv*_*lez 27

composer.json文件列出了依赖项.在你的例子中:

"require": {
    "php": ">=5.5.0",
    "guzzlehttp/guzzle": "^6.0",
    "psr/http-message": "^1.0",
    "psr/log": "^1.0"
},
Run Code Online (Sandbox Code Playgroud)

然后,您必须在packagist站点中找到相应的包.对每个依赖项重复相同的过程:在相应的composer.json文件中查找其他依赖项并再次搜索.

当您最终拥有所需包的完整列表时,您只需要逐个安装它们.在大多数情况下,只需将文件放在项目目录中的某个位置即可.但是您还必须确保PHP可以找到所需的类.由于您没有使用Composer的自动加载器,因此需要将它们添加到您自己的自定义自动加载器中.您可以从相应的composer.json文件中找出信息,例如:

"autoload": {
    "psr-4": { "Coinbase\\Wallet\\": "src/" }
},
Run Code Online (Sandbox Code Playgroud)

如果你不使用类自动加载器,你需要弄清楚各个require_once语句.你可能需要大量的试验和错误,因为大多数图书馆作者都不会关心这一点.

此外,以防万一有这样的困惑:

  • Composer具有适用于Windows的官方GUI 安装程序以及适用于所有平台的复制和粘贴命令行安装过程.
  • Composer可以在本地运行,其输出只是上传到其他地方.您的共享主机中不需要SSH.
  • 安装库所需的命令可以从包网站复制和粘贴 - 即使包维护者不关心它,packagist.org默认生成它.

Composer并不完美,并不适合所有用例,但是,当涉及到安装依赖它的库时,它无疑是最好的选择,而且它是一个相当不错的选择.


我已经检查了我之后的其他答案.它们大多分为两类:

  1. 安装库并使用它编写自定义下载脚本
  2. 使用Composer的在线Web界面

除非我遗漏了什么,否则他们都没有解决OP所表达的抱怨:

  • 学习曲线
  • 使用第三方软件
  • 可以在服务器上开发(使用SSH,我猜)
  • 潜在的深度依赖树

  • 如果这不能说服每个人只使用作曲家,那么什么都不会...... (17认同)
  • 我希望图书馆开发者不再使用作曲家.它在任何严肃的生产环境中都是禁止的.隐藏在"只使用作曲家"背后的人一开始并不知道他们在做什么. (3认同)
  • 首先,当前版本的composer需要proc_open(),该函数并非在所有地方都可用。还有其他问题。尽管我同意作曲家有其长处,但我一直都知道我有一天会遇到问题,而今天就是这样。我还没有弄清楚如何为50多个客户端应用程序安装共享库(使用Composer)。 (2认同)
  • 我认为 @ObedMarquezParlapiano 想说的是,包管理只是解决项目依赖关系的一个工具,对前者的抱怨往往是由后者引起的,因为至少 PHP 事实上的标准工具是相当可靠的,就像任何人一样那些在 Node.js 的 NPM 上苦苦挣扎的人可以断言。当然,我可能是错的。 (2认同)
  • 这是我一生中见过的对讽刺评论的最好解释。你是对的,这使得事情变得更好。 (2认同)

Tsc*_*cka 11

我正在为网站使用共享主机,但无法在那里执行命令。除了通过浏览器请求的 php 脚本请求运行 composer 之外,我通常使用以下工作流程:

  • 确保您在本地安装了 php。
  • 在桌面上制作目录。
  • https://getcomposer.org/download/(在标题*Manual Download 下)下载 composer.phar并将其放在目录中。
  • 制作一个文件composer.json在其中粘贴以下内容

     {
         "require": {
             "coinbase/coinbase": "~2.0"
         }
     }
    
    Run Code Online (Sandbox Code Playgroud)
  • 使用您选择的 shell 浏览到目录(bash、git-bash、cmd、windows bash)

  • 类型 php composer.phar update bash 输出截图
  • 通过 ftp 或您使用的任何机制将供应商目录上传到您的网络服务器。
  • 包含在您加载库的 php 项目中(修改上传供应商目录的路径,以便它包含该自动加载文件)

    require_once('vendor/autoload.php');
    
    Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以获得依赖项管理的好处,并且您不必手动包含所有海量文件并手动下载所有依赖项,更新它们就像键入php composer.phar update然后替换服务器上的供应商目录一样简单新的一个。


jsm*_*ars 9

对我有用的替代解决方案(因为 php-download 已关闭)可以通过制作自己的本地作曲家下载器来完成。

  1. 本地下载并安装 XAMPP: https: //www.apachefriends.org/index.html
  2. 本地下载并安装 Composer:https://getcomposer.org/download/
  3. 打开命令提示符,导航至“ c:\tempand”,然后只需键入作曲家依赖项,例如:composer require league/oauth2-client
  4. c:\temp使用 FTP 程序将文件从您的文件夹复制到您的虚拟主机
  5. 将其添加到 php 的顶部:require("vendor/autoload.php");


小智 5

这不是最终的解决方案,但对我来说,它对大多数情况都有很大帮助: https: //github.com/Wilkins/composer-file-loader

允许您加载composer.json 文件,就像composer 所做的那样。这允许您在没有composer的情况下加载composer.json文件(所以理论上PHP 5.2就足够了)

我知道这个问题很旧,但我希望它能帮助别人。