3

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

  • HTTP_PROXY、HTTPS_PROXY、HTTPS_FULLURI ... 没有任何效果。Composer diag 为 http packagist 提供了 OK 状态,但为 https 连接提供了失败。它给我的错误是:

SSL:握手超时。

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

我真正的问题是:如何手动安装捆绑包

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

我做了什么来尝试安装捆绑包:

  • 在 appKernel.php 中注册包:

new \CS\MenuBundle\CSMenuBundle()

  • 尝试将其添加到 autoload.php :

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

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

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

试图从命名空间“CS\MenuBundle”加载类“CSMenuBundle”。您是否忘记了另一个名称空间的“使用”语句?

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

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

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

试图从命名空间“CS\MenuBundle”加载类“CSMenuBundle”。您是否忘记了“CS\MenuBundle\CSMenuBundle”的“使用”语句?

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

4

1 回答 1

1

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

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

composer require customscripts/menubundle:dev-master- 这将是 Composer 做所有事情的简单命令。但是也有问题:

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

  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”在 master 分支上已经经历了四年的发展。根本无法知道这个包使用了哪个提交。您必须对丢失的信息进行逆向工程。

  4. 此外,您会明白为什么 Composer 很棒而手动操作很糟糕:除了您想要的包之外,您还必须下载此处提到的三个附加包。

  5. 但是检测必须添加的包是一个递归任务:knp-menu-bundle 依赖于 knp-menu(没有进一步的依赖)和 symfony/framework-bundle(已经添加)。symfony/framework-bundle 本身依赖于另外 9 个 Symfony 包和学说/通用...等等。如果您无法使用 Composer,则必须检测其中的每个包并手动下载正确的版本。

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

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

于 2016-01-21T00:48:47.107 回答