无法在 ddev 中为 php 8.0 启用 php-yaml

问题描述 投票:0回答:1

为 Drupal9 创建目录结构后,

ddev config --project-type=drupal9 --docroot=web --create-docroot

我使用 ddev 在该目录中创建了一个 Drupal 发行版 Varbase Starter Kit 项目:

ddev composer create Vardot/varbase-project:~9 --no-dev --no-interaction

我做了必要的配置,并在 config.yaml 中更改了项目的名称和 docroot(注意:Varbase 使用名为 docroot 的目录而不是 web) 然后,当我尝试通过浏览器安装发行版时,我收到一条警告,告诉我缺少 PHP 扩展 YAML。

因此,根据 ddev 文档中的说明,我通过将以下行添加到 config.yaml 来将包添加到 Docker 映像:

webimage_extra_packages: [php-yaml]

然后为了启用扩展,我在 .ddev 目录中创建了一个 php 目录,并使用包含以下行的 .ini 文件添加了我的配置:

[PHP]
extension=yaml.so

我重新启动了 ddev 但 YAML 扩展仍未启用。 我检查了一下,发现 php-yaml 包已成功安装,但未启用。 当我使用命令

ddev php -m
列出 PHP 模块时,未列出 yaml,并且收到以下警告:

PHP Warning:  PHP Startup: Unable to load dynamic library 'yaml.so' (tried: /usr/lib/php/20200930/yaml.so (/usr/lib/php/20200930/yaml.so: cannot open shared object file: No such file or directory), /usr/lib/php/20200930/yaml.so.so (/usr/lib/php/20200930/yaml.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

似乎找不到(或访问?)yaml.so 文件,因此无法启用它。 我该如何解决这个问题?

我正在使用 Linux Mint (LMDE5),网站是 Drupal9,带有 PHP 8.0、nginx-fpm、mariadb 10.3

docker drupal yaml php-extension ddev
1个回答
2
投票

你想要的包只是

php8.0-yaml
,并且
8.0
可以通过
DDEV_PHP_VERSION
环境变量自动化,所以在
.ddev/config.yaml
中:

webimage_extra_packages: [php${DDEV_PHP_VERSION}-yaml]

无需额外配置(无需更改 php 配置)只需

ddev restart
。执行此操作后,您将看到
ddev php -i

中列出的 yaml

参见文档

© www.soinside.com 2019 - 2024. All rights reserved.