在Google Cloud App Engine中使用PHP扩展

13
我正在尝试按照这些说明在Google Cloud App Engine上运行一个symfony4应用程序。
我的应用程序依赖于一个依赖于php-gd的库。由于composer失败并显示the requested PHP extension gd is missing from your system.,因此该扩展似乎不可用。
我需要如何修改教程以使该扩展可用?
这可以通过一个php.ini文件解决吗,还是我需要一个自定义环境?
或者,由于我不需要我的依赖项中需要php-gd的部分,是否有一种方法让composer使用--ignore-platform-reqs标志运行?
3个回答

3
请确保安装了php-gd或apt-get install php5-gd。
对于您的操作系统,使用apt-get install php gd或apt-get install php5-gd,注意您的php版本。
另一种方法是在应用程序的composer.json中添加"ext-gd": "*":
composer require "ext-gd:*" --ignore-platform-reqs 无论您的本地PHP安装是否启用了gd,灵活的环境都是使用您的composer.json和app.yaml文件构建的,因此您需要在其中添加它。

我没有使用本地安装。我正在使用Google Cloud应用引擎,无法安装扩展,这正是我的问题所在。问题是如何在此环境中安装扩展(或让composer忽略它)。 - Johannes Buchholz
我相信这个问题可以通过应用程序根目录下的php.ini解决(https://cloud.google.com/appengine/docs/flexible/php/runtime#using_php_extensions),但不能通过composer.json解决,因为它不允许通过它进行扩展管理。 - Daniel Protopopov
3
“但不是通过composer.json…”这并不完全正确。您提供的文档中指出:“另外,您还可以通过将要求添加到您的composer.json来启用扩展”。Composer本身不管理扩展,但如果Google Cloud应用程序引擎解析composer.json以启用扩展,那么它就会在那里有效地实现了。 - VaaChar
@VaaChar 是的,你是对的,我疏忽了那个事实,没有仔细看。 - Daniel Protopopov
@VarChar请将您的评论改写为答案,以便我接受它。 - Johannes Buchholz

3

这是基于Symfony的。

因此,在您的应用程序根目录下创建一个名为php.ini的文件。

在该文件中输入以下行:

extension=gd.so

这样您的 php.ini 文件应该如下所示。

示例


1
谷歌云应用引擎似乎只加载顶层composer.jsonrequire所需的扩展程序。它似乎不会递归解析依赖项。因此,一种解决方法是手动将所有必需的扩展添加到项目的composer.json中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接