2016-11-11 203 views
23

我试图安装Coinbase PHP API,但它需要作曲:如何安装不作曲家作曲PHP包?

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

我正在寻找一个通用的PHP解决方案(可能是一个功能),让我直接安装作曲家包到我的服务器,而无需使用Composer。

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

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

请不要与一些讽刺性的评论回应。有迹象表明,不希望使用作曲人,我不明白为什么我们应该为了做web开发被赶进一个特定的第三方软件。

+2

所有使用composer的软件包仍然只是充满PHP文件的目录。您可以按照您作曲家存在之前的方式完全安装它们:将它们复制到某处并“包含”这些文件。 – deceze

+2

基于Composer的安装意味着运行一个命令,该命令几乎总是显示在软件包主页中。我知道有用于手动安装的用例,但它永远不会是更简单的方法。 –

+8

@ÁlvaroGonzález我无法不同意你的评论。请参阅:http://okmaya.com/2016/03/13/package-managers-hate-npm-composer/。我并不是说软件包管理员对于某些人和项目来说并不好,只是他们通常需要更多的工作和努力,而不是简单地在项目中放置文件夹并引用它。 – dallin

回答

11

composer.json file列出的依赖关系。在您的示例中:

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

然后,您必须在packagist站点中找到相应的软件包。重复同样的过程每个依存性:在其相应的composer.json文件找到额外的依赖并重新搜索。

当您最终获得所需软件包的完整列表时,您只需要逐一安装它们。大多数情况下,这只是将文件放在项目目录中某处的问题。但是您还必须确保PHP可以找到所需的类。既然你不使用作曲家的自动加载,你需要将它们添加到自己的自定义自动加载。您可以从相应的composer.json文件计算出的信息,例如:

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

如果不使用类自动加载器,你需要找出个别require_once语句。您可能需要大量的试验和错误,因为大多数图书馆作者都不会在意文档记录。

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

  • 作曲家为Windows的官方GUI安装程序和复制和粘贴适用于所有平台命令行安装过程。
  • Composer可以在本地运行,其输出只是上传到别处。您的共享主机中不需要SSH。
  • 安装库所需的命令可以从软件包网站进行复制和粘贴 - 即使软件包维护人员不在意文档记录,packagist.org默认也会生成它。

作曲家并不完美,它不适合所有用例,但是当涉及到安装依赖它的库时,它无疑是最好的替代品,而且是相当不错的选择。


我查过了我的其他答案。他们大多分为两类:

  1. 安装一个图书馆和编写自定义下载脚本与它
  2. 用于作曲

一个在线的基于Web的界面除非我失去了一些东西,没有的他们解决由OP表示这样的抱怨:

  • 学习曲线
  • 使用的第三方软件
  • 可能性开发权的服务器上(使用SSH,我相信)
  • 潜在深的依赖关系树
+10

如果这不能说服每个人都只是使用作曲家,那么什么都不会...... – deceze

+0

首先,作曲家的当前版本需要proc_open(),而这在任何地方都不可用。还有其他问题。虽然我同意作曲家有其优点,但我总是知道我有一天会遇到问题,而今天就是这样。我还没有想出如何为50多个客户端应用程序安装共享库(使用Composer)。 – karvonen

18

你可以尝试https://php-download.com/,它可以帮助你下载所有依赖的大部分时间与vendor文件夹一起。它承诺作曲家不是必需的。 自己试了一下。它会查找并创建所有必需的文件夹并将其压缩以供下载。完美的作品!

+1

完美运作!谢谢 !! – Yousphere

+6

这应该是被接受的答案。它只是做了作曲家的工作,然后返回一个zip。 – Soaku

+0

它没有github的所有库。当我尝试使用这个例子:https://github.com/mgp25/Instagram-API它说它找不到它。 – IchHabsDrauf

1

我必须为我没有SSH访问权限的FTP服务器执行此操作。这里列出的网站工作,然后我意识到你可以在你自己的服务器(使用你的目标的PHP版本)上做一个作曲家安装,然后复制所有文件。

+0

这应该是答案。为我完美工作, –

+0

你能否更好地解释你的答案?对不起,我的愚蠢。 – IchHabsDrauf

+0

@IchHabsDrauf基本上,他更愿意使用作曲家(在这一部分,它不是真正的作曲家),而不是将文件复制到生产环境中。我对此的评论是,也许有些人没有作曲家的开发环境,因此这不是一个真正的赞美者。 –

0

这不是最终的解决办法,但对我来说这是大多数的情况下,一个很大的帮助: https://github.com/Wilkins/composer-file-loader

可以加载composer.json文件只是作为作曲家会做到这一点。 这可以加载composer.json文件,而不作曲家(所以 theorically PHP 5.2就足够了)

我知道这个问题是旧的,但我希望这会帮助别人。

0

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

  • 确保你已经在本地安装了php。
  • 在桌面上创建目录。
  • https://getcomposer.org/download/下载composer.phar(在标题下*手册下载)并将其放置在目录中。
  • 使文件composer.json粘贴在它下面的内容

    { 
        "require": { 
         "coinbase/coinbase": "~2.0" 
        } 
    } 
    
  • 浏览与你选择(bash中,混帐的bash,CMD窗口的bash)的外壳目录

  • 类型php composer.phar updatescreenshot of bash output
  • 通过ftp或任何你使用的机制将vendor目录上传到你的网络服务器。
  • 包括在你的PHP项目,您加载库(修改路径到您上传的供应商目录,因此将包括自动加载文件)

    require_once('vendor/autoload.php'); 
    

这样你依赖的好处管理,而且您不必手动包含所有文件,并手动下载所有依赖关系,更新它们与输入php composer.phar update一样简单,然后使用新服务器替换服务器上的供应商目录。