Laravel 5 Bluemix 上的应用程序

Laravel 5 app on Bluemix

我一直无法使用 laravel 4.2 和 5.0 将我的 laravel 应用程序部署到 bluemix。 这是 blumix 日志中的错误:

2015-05-01T16:52:49.71+0100 [STG/0] ERR [UnexpectedValueException]
2015-05-01T16:52:49.71+0100 [STG/0] ERR Could not parse version constraint ^1.2.2: Invalid version string “^1.2.2″
2015-05-01T16:52:49.71+0100 [STG/0] ERR install [–prefer-source] [–prefer-dist] [–dry-run] [–dev] [–no-dev] [–no-plugins] [–no-custom-installers] [–no-scripts] [–no-progress] [-v|vv|vvv|–verbose] [-o|–optimize-autoloader] [–ignore-platform-reqs] [packages1] … [packagesN]
2015-05-01T16:52:49.73+0100 [STG/0] OUT —–> Composer command failed
2015-05-01T16:52:49.73+0100 [STG/0] ERR Traceback (most recent call last):
2015-05-01T16:52:49.73+0100 [STG/0] ERR File “/tmp/buildpacks/php-buildpack/scripts/compile.py”, line 51, in
2015-05-01T16:52:49.73+0100 [STG/0] ERR .from_build_pack(‘lib/additional_commands’)
2015-05-01T16:52:49.73+0100 [STG/0] ERR File “/tmp/buildpacks/php-buildpack/lib/build_pack_utils/builder.py”, line 189, in extensions
2015-05-01T16:52:49.73+0100 [STG/0] ERR process_extension(path, ctx, ‘compile’, process, args=[self])
2015-05-01T16:52:49.73+0100 [STG/0] ERR File “/tmp/buildpacks/php-buildpack/lib/build_pack_utils/utils.py”, line 69, in process_extension
2015-05-01T16:52:49.73+0100 [STG/0] ERR success(getattr(extn, to_call)(*args))
2015-05-01T16:52:49.73+0100 [STG/0] ERR File “/tmp/buildpacks/php-buildpack/extensions/composer/extension.py”, line 359, in compile
2015-05-01T16:52:49.73+0100 [STG/0] ERR return composer.compile(install)
2015-05-01T16:52:49.73+0100 [STG/0] ERR File “/tmp/buildpacks/php-buildpack/lib/extension_helpers.py”, line 154, in compile
2015-05-01T16:52:49.73+0100 [STG/0] ERR self._compile(install)
2015-05-01T16:52:49.73+0100 [STG/0] ERR File “/tmp/buildpacks/php-buildpack/extensions/composer/extension.py”, line 162, in _compile
2015-05-01T16:52:49.73+0100 [STG/0] ERR self.run()
2015-05-01T16:52:49.73+0100 [STG/0] ERR File “/tmp/buildpacks/php-buildpack/extensions/composer/extension.py”, line 244, in run
2015-05-01T16:52:49.73+0100 [STG/0] ERR *self._ctx[‘COMPOSER_INSTALL_OPTIONS’])
2015-05-01T16:52:49.73+0100 [STG/0] ERR File “/tmp/buildpacks/php-buildpack/extensions/composer/extension.py”, line 289, in run
2015-05-01T16:52:49.73+0100 [STG/0] ERR shell=True)
2015-05-01T16:52:49.73+0100 [STG/0] ERR File “/tmp/buildpacks/php-buildpack/lib/build_pack_utils/runner.py”, line 109, in stream_output
2015-05-01T16:52:49.73+0100 [STG/0] ERR raise CalledProcessError(retcode, cmd)
2015-05-01T16:52:49.73+0100 [STG/0] ERR build_pack_utils.runner.CalledProcessError: Command ‘<open file '’, mode ‘w’ at 0x28b9420>’ returned non-zero exit status 1
2015-05-01T16:52:49.76+0100 [STG/0] OUT Staging failed: Buildpack compilation step failed
2015-05-01T16:52:50.02+0100 [API/3] ERR Encountered error: App staging failed in the buildpack compile phase

这是 composer.lock 文件中失败的地方:

“require”: {
“nikic/php-parser”: “^1.2.2″,
“php”: “>=5.3.3″,
“symfony/console”: “~2.1″,
“symfony/filesystem”: “~2.1″,
“symfony/finder”: “~2.1″
},

^1.2.2 就是它所抱怨的。对于如何解决这个问题,有任何的建议吗?提前致谢。

您能否在本地 运行 composer update 以确保您的 composer.lock 是最新的。还要确保您没有将 composer.phar 推送到 Bluemix。您可以阻止任何文件被推送到 Bluemix,方法是在代码的根目录中创建一个 .cfignore 文件,然后添加您不想上传到该文件的 file/directory 的名称。

您使用的 PHP buildpack 是哪个版本?您可能想通过使用 -b https://github.com/cloudfoundry/php-buildpack 选项推送您的应用程序来试用最新的社区版本。

我知道对于较早版本的 buildpack (v3.1.0),您实际上需要在一个名为 options.json 的应用程序推送的文件中指定一个名为 COMPOSER_VERSION 的特殊属性

示例options.json:

{
  "PHP_EXTENSIONS": [ "bz2", "zlib", "openssl", "fpm", "tokenizer", "curl", "mcrypt", "mbstring", "pdo"],
  "PHP_VERSION": "PHP_55_LATEST",
  "COMPOSER_VENDOR_DIR":"htdocs/vendor",
  "COMPOSER_VERSION": "latest",
  "WEBDIR": "htdocs/public"
}

来源:https://github.com/cloudfoundry/php-buildpack/issues/47#issuecomment-82972562

有关此配置文件的更多信息,请访问 https://github.com/cloudfoundry/php-buildpack/blob/master/docs/config.md

感谢您的回答。我确实有 .cfignore 文件,而且我确实在使用 v3.1.0。

无论如何,作为临时修复,我将所有 ^ 替换为 >= < 相应的值,尽管不需要更新版本的 buildpack。

此外,PHP 版本需要包含在 {} 周围,以便 bluemix 正确获取它:"PHP_VERSION":“{PHP_55_LATEST}”

谢谢