2016-12-06 40 views
1

** 编辑 **如何在swisscomdev/cloudfoundry上使用/启用PHP扩展的CLI php_buildback?

因为我们需要调用部署CloudFoundry应用Symfony的命令,几起案件。 Symfony命令是使用PHP CLI调用的php脚本。

一个例子是bin/console doctrine:schema:update(但可能是用户生成,清除缓存等)

所以对于我们的应用程序,我们需要同时启用,FPM和CLI。这是通过:

"PHP_MODULES": [ 
"fpm", 
"cli"] 

in options.json。

连接到应用程序cf ssh后,我切换到应用程序目录,我打电话php/bin/php doctrine:schema:update这导致了一个ClassNotFound:PDO问题。

在分期过程中,这些命令被调用成功。

我检查了PHP CLI的PDO扩展不可用(通过检查php -i),尽管我已经在options.json中提到了它。

"PHP_EXTENSIONS": [ 
... 
"pdo", 
"pdo_mysql", 
...] 

如何在一个应用上启用CLI和FPM的扩展?理论上可以为CLI和FPM提供不同的扩展,以及不同的user-php.ini可以完全/特别覆盖CLI和FPM的php.ini吗?

回答

1

所以对于我们的应用程序,我们需要启用fpm和cli。

“PHP_MODULES”:这是用做[ “FPM”, “(CLI)”]

在options.json

这是我们应该在构建包中清理的东西。我不相信这是(PHP_MODULES)实际上再次使用。

也许一年或更久以前,构建包会切换它下载PHP的方式。它以前会下载单个组件模块&扩展。现在它只是一次下载所有内容。实际上,由于它的下载量比较小的下载量要大得多,并且带宽通常非常快,所以构建包下载的速度更快。

值得一提的是,虽然PHP_EXTENSIONS不再触发下载它的内容,但它仍然用于php.ini中启用了哪些扩展。因此您仍然需要通过作曲者设置或指定扩展名。

连接到应用程序与CF SSH

后,我认为这是问题。您需要获取构建包env变量的源代码,以便正确配置env。

例:

[email protected]:~$ php 
bash: php: command not found 

[email protected]:~$ HOME=$HOME/app source app/.profile.d/bp_env_vars.sh 
[email protected]:~$ php -v 
PHP 5.6.26 (cli) (built: Oct 28 2016 22:24:22) 
Copyright (c) 1997-2016 The PHP Group 
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies 

分段自动执行此操作一样运行你的应用程序。不幸的是cf ssh没有。

UPDATE:

稍微更简单的方式来做到这一点是运行cf ssh myapp -t -c "/tmp/lifecycle/launcher /home/vcap/app bash ''"。这将打开一个bash shell,它可以让生命周期启动器处理来源&设置环境。

而且是它理论上可以具有用于CLI和FPM不同的扩展和以及不同的用户的php.ini s至完全/特别重写CLI和FPM的php.ini中?

当然。默认情况下,我们下载并安装所有扩展。因此,您只需要一个不同的php.ini(或其他设置来启用该扩展),在其中启用备用扩展集。

当您将cf ssh放入容器时,您可以将现有的php.ini复制到别的地方,并根据您的CLI需要进行编辑。然后在运行CLI命令时引用该php-alt.ini。

+0

哇,这是一个艰难的一个我”! d从来没有能够弄清楚!你认为有可能以某种方式将这个额外命令添加到cf ssh命令中?因为如果它在登台和应用程序运行时完成,它看起来也应该为cf ssh完成。 – LBA

+0

已创建一个github问题与PHP的buildpack - 但不知道这是否是正确的地址指出问题。https://github.com/cloudfoundry/php-buildpack/issues/182 – LBA

+0

据我所知,这是平台的东西需要做的。其他使用'.profile.d'脚本进行env setup(这是最多的)的构建包具有相同的限制。 –

0

从来没有这样做,但确实启用php_MODULES(https://docs.developer.swisscom.com/buildpacks/php/gsg-php-config.html)的php cli有帮助吗?

+0

啊,这看起来太棒了 - 应该看到这个 - 会尝试并提供反馈。 – LBA

+0

我提供'“PHP_MODULES”: “FPM”, “CLI” ]' - 但不知道它真正得到安装 - 外观和行为像以前一样:-( – LBA