需要帮助克服PHP5.3中某些行为依赖项集的不兼容性吗

需要帮助克服PHP5.3中某些行为依赖项集的不兼容性吗,php,bdd,behat,Php,Bdd,Behat,我有一个特定的behat配置,带有一个特定的依赖项集,它在PHP5.5中运行良好。但后来我不得不将配置转移到jenkins的服务器上。问题是服务器安装了PHP5.3,不可能更新 尽管依赖项拒绝以正常方式通过composer安装,但我还是使用“-ignore platform reqs”参数强制安装它们 安装了依赖项之后,我面临着另一个我无法轻易克服的问题。它只是在尝试执行“bin/behat”命令时显示错误: 以下是composer.json中的依赖项列表: { "require": {

我有一个特定的behat配置,带有一个特定的依赖项集,它在PHP5.5中运行良好。但后来我不得不将配置转移到jenkins的服务器上。问题是服务器安装了PHP5.3,不可能更新

尽管依赖项拒绝以正常方式通过composer安装,但我还是使用“-ignore platform reqs”参数强制安装它们

安装了依赖项之后,我面临着另一个我无法轻易克服的问题。它只是在尝试执行“bin/behat”命令时显示错误:

以下是composer.json中的依赖项列表:

{
  "require": {
    "behat/gherkin": "~4.4",
    "drupal/drupal-extension": "~3.1",
    "emuse/behat-html-formatter": "dev-master"
  },
  "require-dev": {
    "bossa/phpspec2-expect": "~1.0",
    "ocramius/proxy-manager": "~0.5",
    "phpunit/phpunit": "~4.5",
    "jakoch/phantomjs-installer": "1.9.8"
  },
  "autoload": {
    "psr-0": {
      "Behat\\Behat":    "src/",
      "Behat\\Testwork": "src/"
    }
  },
  "config": {
    "bin-dir": "bin/"
  }
}

短数组语法[]是在PHP5.4中添加的,所以我猜您正在共享服务器上运行一些旧版本的PHP。通常,将[]替换为array()会有所帮助,但这里它是一个外部供应商包,因此不建议修改代码,因为更新供应商包时会覆盖更改。除此之外,解决该问题的唯一方法是使用较新版本的PHP


我找到了解决这个问题的办法。我已将composer.json中的“require”块更改为以下内容:

{
  "require": {
    "drupal/drupal-extension": "*",
    "emuse/behat-html-formatter": "dev-master"
  },
注意,我已经去掉了“behat/gherkin”:“~4.4”,并将drupal/扩展版本更改为“*”因此,它会根据我的系统规格下载最新、最稳定的版本及其所需的所有依赖项(因此也包括behat 4)(因此它与PHP 5.3兼容)。


至少我是这么看的。如果我错了,请纠正我

是的,它是5.3,所以数组[]声明不受支持。我曾考虑将所有[]替换为(),但这不是一个优雅的解决方案,有可能会导致崩溃(特别是在实际需要此括号的地方)。我考虑的另一个解决方案是降级依赖项,这样实际的集合实际上是5.3兼容的。但这需要很长时间才能得到它们的正确组合,使它们都能与5.3兼容,并且彼此兼容。你说的是使用而不是?如果你不能升级到
PHP5.5
,我认为这是你唯一的解决方案。实际上,这是一个想法。我想试试。谢谢。我已经尝试过安装guzzle/guzzle 3.5.0(通过将其添加到require dev部分)并将其添加到composer中。但由于某种原因,我最终使用了guzzle和guzzlehttp,因此我无法使用它(当然,我可能做了一些错误的事情);它在几个月前就“寿终正寝”。目前支持的最低PHP版本是5.4。您遇到的问题是由于PHP代码的语法仅在5.4以上版本中受支持。随着开发人员使用最新的PHP特性,您可能会越来越多地遇到这种问题。你最好的解决方案是升级你的PHP版本,最好是一直升级到5.6(也可以考虑看看7.0,但是它比5.6有更多的兼容性问题)是的,我知道这一点。但是我们严格遵守这个PHP版本,因为我们客户机的服务器也在这个PHP版本上运行。我试着运用我的说服技巧,并对PHP版本说了同样的话……但运气不好。我对这样的客户非常恼火。不想立即升级到新版本是一回事,但在不再支持的情况下仍然不升级是一种疏忽。我敢打赌,再过五年,他们仍将坚持5.3。吼叫声同样的态度意味着仍然有数以百万计的Windows XP系统。这种态度不断导致服务器被黑客攻击和数据泄露成为新闻。有些人就是不明白让他们的软件保持最新的重要性。(呵呵,很抱歉你的咆哮…!)
{
  "require": {
    "drupal/drupal-extension": "*",
    "emuse/behat-html-formatter": "dev-master"
  },