如何在没有作曲家的情况下安装供应商包(企业网络)

How to install vendor bundle WITHOUT composer (corporate network)

首先,我不能使用composer,因为我在公司网络下。我尽了一切努力让作曲家工作:

SSL : Handshake timed out.

但这不是我的问题,我花了很多时间试图让作曲家工作(但如果你有解决方案,你会让我开心)

我真正的问题如下:如何手动安装包

我想安装这个包:http://knpbundles.com/pierredup/MenuBundle

我尝试安装捆绑软件所做的工作:

new \CS\MenuBundle\CSMenuBundle()

$loader->add('CS', __ DIR __.'/../vendor/CS/CSMenuBundle.php');

(不知道如何正确添加 php 代码...)

但是它不起作用,出现以下错误:

Attempted to load class "CSMenuBundle" from namespace "CS\MenuBundle". Did you forget a "use" statement for another namespace?

然后,即使这不是一个好习惯,我还是尝试将其添加到 autoload_namespaces.php 并在之后进行了转储自动加载:

'CS\MenuBundle' => array($vendorDir. '/CS/')

我仍然有错误,但不完全相同:

Attempted to load class "CSMenuBundle" from namespace "CS\MenuBundle". Did you forget a "use" statement for "CS\MenuBundle\CSMenuBundle"?

现在我有点沮丧,我看到很多帖子(不在 Stack 上)人们尖叫,因为我们必须使用 composer 来管理依赖项。我完全同意这一点,但我不能,所以我试图找到另一种方法,并且由于我找不到任何清晰的教程来解释如何在没有作曲家的情况下安装供应商,所以我来了。

请注意,我直接评论了我在你的问题上看到的问题。

但是,我查看了您要使用的软件包,看看是否有机会以某种方式安装它(首选 Composer)。我认为这不可能或不可行。

composer require customscripts/menubundle:dev-master - 这将是 Composer 执行所有操作的简单命令。但是也有问题:

  1. 您要使用的包未在 packagist.org 上注册,因此无法在正确连接到 Internet 的机器上简单地使用 Composer,获取包,压缩它们然后 t运行将它们送到您需要的地方。

  2. 要解决此问题,您需要手动将存储库添加到 composer.json 文件 - 这实际上可能有效(但在我的 VM 上花费太多时间)。您最终会得到最后一次编辑是在 2012 年的代码!

  3. 该代码的依赖项可能不再有效。该软件包的 composer.json 列出了 "require": {"knplabs/knp-menu-bundle": "dev-master", "symfony/framework-bundle": ">=2.0,<2.3-dev", "jms/di-extra-bundle": "1.1.*"} - 即使是第一个 "knplabs/knp-menu-bundle" 也永远不会工作。请记住,这个包的代码是从 2012 年开始的 - 现在我们是 2016 年,所以 "knp-menu-bundle" 已经在主 b运行ch 上进行了四年的开发。根本没有办法知道这个包使用了哪个提交。你必须 reverse-engineer 这个丢失的信息。

  4. 此外,您明白了为什么 Composer 很棒而手动执行它却很糟糕:除了您想要的包之外,您还必须下载此处提到的三个额外包。

  5. 但是检测必须添加的包是一项递归任务:knp-menu-bundle 依赖于 knp-menu(没有进一步的依赖)和 symfony/framework-bundle(已经加入)。 symfony/framework-bundle 本身依赖于另外 9 个 Symfony 包和 doctrine/common... 等等。如果你不能使用 Composer,你必须检测每个包并手动下载正确的版本。

由于在我输入答案时安装尚未完成,所以我跳过了您的原始软件包,我尝试安装 knp-menu-bundle 以查看将安装多少个软件包。 Composer 安装了 20 个软件包,其中一些在 2.8 中使用 Symfony(它应该与 Symfony 2.2 的东西兼容,不是吗)-我只是 运行 composer require knplabs/knp-menu-bundle:1.1.1 来获取类似的旧版本 knp-menu-bundle 从 2012 年开始。

使用 Composer 的优势在于它通过允许快速更新、可靠降级(如果您提交 composer.lock 文件并始终使用标记版本)以及允许立即添加新包来支持快速开发。作为 PHP 开发人员,无法使用 Composer 是一个非常严重的限制。与您的老板或团队负责人讨论您公司使用 HTTPS 代理的情况,并找到使用 Composer 的解决方案。另一种方法是自己从头开始开发所有内容,或者浪费大量时间尝试 fiddle 手动下载,这些下载不容易组合在一起。