在DDEV中无法为PHP 8.0启用php-yaml扩展的求助
解决DDEV环境中PHP YAML扩展无法启用的问题
问题背景
按以下流程操作后遇到PHP YAML扩展无法启用的问题:
- 创建Drupal 9目录结构后执行命令:
ddev config --project-type=drupal9 --docroot=web --create-docroot - 在该目录下通过DDEV创建Varbase Starter Kit项目:
ddev composer create Vardot/varbase-project:~9 --no-dev --no-interaction - 修改
.ddev/config.yaml中的项目名称和docroot(Varbase使用docroot目录而非默认的web) - 尝试浏览器安装发行版时,收到PHP YAML扩展缺失的警告
按DDEV文档尝试以下操作后问题仍未解决:
- 在
config.yaml中添加配置:webimage_extra_packages: [php-yaml] - 在
.ddev目录下创建php文件夹,添加.ini文件内容:[PHP] extension=yaml.so
重启DDEV后,YAML扩展仍未启用,执行ddev php -m未列出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
环境信息:Linux Mint(LMDE5),Drupal 9,PHP 8.0,nginx-fpm,mariadb 10.3
解决步骤
1. 修正扩展包名称
DDEV的web镜像中,不同PHP版本对应不同的扩展包命名。PHP 8.0对应的YAML扩展包是php8.0-yaml,而非通用的php-yaml。修改.ddev/config.yaml中的配置:
webimage_extra_packages: [php8.0-yaml]
2. 删除手动添加的.ini配置文件
安装php8.0-yaml包后,系统会自动生成对应的配置文件启用扩展,无需手动创建.ini文件。删除.ddev/php目录下的yaml相关.ini文件。
3. 重启DDEV服务
执行命令重启服务:ddev restart
4. 验证扩展状态
执行命令查看已启用的PHP扩展:ddev php -m
检查输出中是否包含yaml,同时确认不再出现启动警告。
内容的提问来源于stack exchange,提问作者random input
相关产品推荐
相关产品推荐

