在Cloudfoundry上部署Laravel应用程序

时间:2016-06-29 10:57:31

标签: laravel cloudfoundry swisscomdev

我正在尝试将基于Laravel的Web应用程序部署到Swisscom Application Cloud。因此我使用提供的PHP Buildpack。 Docs展示了Lumen的一个例子,所以我假设它也适用于Laravel。

使用过的命令:cf push app-name -m 512M -n app-name

部署时我遇到了这两个错误:

A)

The extension 'fpm' is not provided by this buildpack.
The extension 'tokenizer' is not provided by this buildpack.
The extension 'dom' is not provided by this buildpack.
The extension 'json' is not provided by this buildpack.
The extension 'pcre' is not provided by this buildpack.
The extension 'reflection' is not provided by this buildpack.
The extension 'spl' is not provided by this buildpack.

b)中

Generating autoload files
> Illuminate\Foundation\ComposerScripts::postInstall
> php artisan optimize
PHP Warning:  require(/tmp/app/bootstrap/../vendor/autoload.php):failed to open stream: No such file or directory in /tmp/app/bootstrap/autoload.php on line 17
PHP Fatal error:  require(): Failed opening required '/tmp/app/bootstrap/../vendor/autoload.php'(include_path='../lib/php:/tmp/app/lib') in /tmp/app/bootstrap/autoload.php on line 17
Script php artisan optimize handling the post-install-cmd event returned with an error

我的options.json文件:

{
   "WEBDIR": "public",
   "PHP_VERSION": "{PHP_70_LATEST}",
   "PHP_EXTENSIONS": [ "bz2", "zlib", "openssl", "fpm", "tokenizer", "curl", "mcrypt", "mbstring", "pdo", "pdo_mysql"]
}

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

a =>是与buildpack相关的,并没有破坏任何东西。这只是一个信息,这些扩展尚不可用。

b => artisan在分段时间不可用,因此您在作曲家脚本(composer.json)中触发的“optimize”命令将不起作用。我还没有找到合适的解决方案,所以目前我不这样做。

你的options.json还需要一件事=> “LIBDIR”:“” 这将在应用程序根目录中安装您的composer供应商目录。

祝你好运 戴夫

答案 1 :(得分:0)

我找到了解决方案。只需添加

"COMPOSER_VENDOR_DIR": "vendor",

到您的options.json文件。

{
"PHP_VERSION": "{PHP_70_LATEST}",
"WEBDIR": "public",
"LIBDIR": "vendor",
"COMPOSER_VENDOR_DIR": "vendor",
"PHP_EXTENSIONS": [ "bz2", "zlib", "openssl", "fpm", "tokenizer", "curl", "mcrypt", "mbstring", "pdo", "pdo_mysql"]
}

More information in the Docs