Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 如何在swisscomdev/cloudfoundry PHP_构建中使用/启用用于CLI的PHP扩展?_Symfony_Cloud Foundry_Swisscomdev - Fatal编程技术网

Symfony 如何在swisscomdev/cloudfoundry PHP_构建中使用/启用用于CLI的PHP扩展?

Symfony 如何在swisscomdev/cloudfoundry PHP_构建中使用/启用用于CLI的PHP扩展?,symfony,cloud-foundry,swisscomdev,Symfony,Cloud Foundry,Swisscomdev,**编辑** 在某些情况下,我们需要在部署的CloudFoundry应用程序上调用Symfony命令。Symfony命令是使用PHPCLI调用的php脚本 一个例子是bin/console原则:schema:update(但可能是用户生成、缓存清除等) 因此,对于我们的应用程序,我们需要同时启用fpm和cli。这是通过以下方式完成的: "PHP_MODULES": [ "fpm", "cli"] 在options.json中 "PHP_EXTENSIONS": [ ... "pdo",

**编辑**

在某些情况下,我们需要在部署的CloudFoundry应用程序上调用Symfony命令。Symfony命令是使用PHPCLI调用的php脚本

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

因此,对于我们的应用程序,我们需要同时启用fpm和cli。这是通过以下方式完成的:

  "PHP_MODULES": [
"fpm",
"cli"]
在options.json中

"PHP_EXTENSIONS": [
 ...
 "pdo",
 "pdo_mysql",
 ...]
使用
cf ssh
连接到应用程序后,我更改到应用程序目录,并调用
php/bin/php-doctor:schema:update
这会导致ClassNotFound:PDO问题

在转移期间,这些命令被成功调用

我检查了PHPCLI的PDO扩展不可用(通过检查PHP-I),尽管我在options.json中提到了它

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

如何在一个应用程序上启用CLI和FPM扩展?从理论上讲,是否有可能对CLI和FPM进行不同的扩展,以及使用不同的user-php.ini来完全/特别地覆盖CLI和FPM的php.ini?

从来没有这样做过,但在php_模块()中启用php CLI是否有帮助

因此,对于我们的应用程序,我们需要同时启用fpm和cli。这是通过以下方式完成的:

  "PHP_MODULES": [
"fpm",
"cli"]
“PHP_模块”:[“fpm”,“cli”]

在options.json中

"PHP_EXTENSIONS": [
 ...
 "pdo",
 "pdo_mysql",
 ...]
这可能是我们应该在构建包中清理的内容。我不相信它的(PHP_模块)实际使用了更多

也许一年多以前,构建包改变了下载PHP的方式。它以前会下载单个组件、模块和扩展。现在它只需一次下载所有内容。这实际上会更快,因为它是一个较大的下载,而不是许多较小的下载,而且构建包下载的带宽通常非常快

值得一提的是,虽然PHP_扩展不再触发要下载的内容,但它仍然在PHP.ini中启用了哪些扩展。因此,您仍然需要通过composer设置或指示扩展

使用cf ssh连接到应用程序后

我相信这就是问题所在。您需要获取构建包环境变量的源代码,以便正确配置环境

例:

登台和应用程序的运行时一样自动执行此操作。不幸的是,
cf ssh
没有

更新:

一个稍微简单的方法是运行
cf ssh myapp-t-c”/tmp/lifecycle/launcher/home/vcap/app bash''
。这将打开一个bashshell,它让lifecycle launcher处理环境的寻源和设置

从理论上讲,是否有可能对CLI和FPM进行不同的扩展,以及使用不同的user-php.ini来完全/特别地覆盖CLI和FPM的php.ini

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


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

啊,看起来很棒-应该看到这一点-将尝试提供反馈。我提供了
“php\u模块”:[“fpm”,“CLI”]
-但不确定它是否真的安装了-外观和行为与以前一样:-(哇,这真是一个难题!我一直没能弄明白!你认为有可能以某种方式将这个额外的命令添加到cf ssh命令中吗?因为如果在登台和应用程序运行时完成,它看起来也应该为cf ssh完成。在php buildpack中创建了一个github问题-但不确定这是否是正确的地址。)将问题指向。据我所知,这是平台需要做的事情。其他使用
.profile.d
脚本进行环境设置的构建包(大多数)也有相同的限制。