我有一个特定的behat配置,具有特定的依赖项设置,适用于PHP 5.5。但后来我不得不将该配置转移到带有jenkins的服务器上。问题是服务器安装了PHP 5.3,无法更新。
尽管拒绝以正常方式通过作曲家安装依赖项,但我还是强迫它们使用" - ignore-platform-reqs"参数。
安装了依赖项之后,我面临着另一个我无法轻易克服的问题。它只是在尝试执行" bin / behat"时显示错误。命令:
PHP Parse error: syntax error, unexpected '[' in .../workspace/automated-tests/vendor/guzzlehttp/psr7/src/functions.php on line 77
PHP Stack trace:
PHP 1. {main}() .../workspace/automated-tests/vendor/behat/behat/bin/behat:0
PHP 2. includeIfExists() .../workspace/automated-tests/vendor/behat/behat/bin/behat:21
PHP 3. include() .../automated-tests/vendor/behat/behat/bin/behat:17
PHP 4. ComposerAutoloaderInit617eef80953ba1e8b93feeaeccb52bc0::getLoader() .../workspace/automated-tests/vendor/autoload.php:7
PHP 5. composerRequire617eef80953ba1e8b93feeaeccb52bc0() .../workspace/automated-tests/vendor/composer/autoload_real.php:49
PHP 6. require() .../workspace/automated-tests/vendor/composer/autoload_real.php:59
Parse error: syntax error, unexpected '[' in .../workspace/automated-tests/vendor/guzzlehttp/psr7/src/functions.php on line 77 Call Stack: 0.0006 645368 1. {main}() .../workspace/automated-tests/vendor/behat/behat/bin/behat:0 0.0008 645976 2. includeIfExists() .../workspace/automated-tests/vendor/behat/behat/bin/behat:21 0.0016 649328 3. include('.../workspace/automated-tests/vendor/autoload.php') .../workspace/automated-tests/vendor/behat/behat/bin/behat:17 0.0021 680968 4. ComposerAutoloaderInit617eef80953ba1e8b93feeaeccb52bc0::getLoader() .../workspace/automated-tests/vendor/autoload.php:7 0.0082 1106296 5. composerRequire617eef80953ba1e8b93feeaeccb52bc0() .../workspace/automated-tests/vendor/composer/autoload_real.php:49 0.0089 1109928 6. require('.../workspace/automated-tests/vendor/guzzlehttp/psr7/src/functions_include.php') .../automated-tests/vendor/composer/autoload_real.php:59
这里是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/"
}
}
答案 0 :(得分:2)
在PHP 5.4中添加了短数组语法 [] ,所以我猜你在共享服务器上运行了一些旧版本的PHP。通常用 array()替换 [] 会有所帮助,但这里是一个外部供应商包,所以不建议修改代码,因为更改会被覆盖当供应商包更新时。除此之外,解决该问题的唯一方法是使用较新版本的PHP。
答案 1 :(得分:1)
我找到了问题的解决方案。我已经改变了"要求"在composer.json中阻止以下内容:
{
"require": {
"drupal/drupal-extension": "*",
"emuse/behat-html-formatter": "dev-master"
},
请注意,我已经摆脱了"" behat / gherkin":" ~4.4""并将drupal / extension版本更改为" *"。 因此,根据我的系统规范(因此与PHP 5.3兼容),它会下载最新且最稳定的版本以及它所需的所有依赖项(因此也包括4)。
至少就是我看待它的方式。如果我错了,请纠正我。