1

我正在尝试将基于 Laravel 的 Web 应用程序部署到 Swisscom 应用程序云。因此我使用提供的 PHP Buildpack。文档展示了一个 Lumen 的例子,所以我假设它也应该与 Laravel 一起工作。

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

部署时出现以下两个错误:

一个)

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"]
}

谢谢您的帮助!

4

2 回答 2

1

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

"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"]
}

文档中的更多信息

于 2016-07-05T08:43:59.853 回答
0

a => 与 buildpack 相关,不会破坏任何内容。这只是这些扩展程序尚不可用的信息。

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

您的 options.json 还需要一件事 => "LIBDIR": "" 这会将您的作曲家供应商目录安装在应用程序根目录中。

最好的问候戴夫

于 2016-06-29T11:26:06.450 回答