You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drupal 9使用Devel生成测试内容时触发致命错误求助

问题描述

全新安装Drupal 9.4.8后,使用Devel模块(^5.0)的Devel Generate功能生成测试内容时触发致命错误,浏览器仅提示“网站遇到意外错误,请稍后重试”。查看Apache日志发现核心错误:

PHP message: Error: Class 'Drush\Utils\StringUtils' not found in /var/www/example/public/modules/contrib/devel/devel_generate/src/Plugin/DevelGenerate/ContentDevelGenerate.php on line 391

复现步骤:

  1. 通过Composer安装Devel模块:
composer require 'drupal/devel:^5.0'
  1. 在Drupal后台启用Devel和Devel Generate组件;
  2. 进入admin/config/development/generate/content,选择自定义的Events和User Groups内容类型,设置生成50个节点、时间范围回溯1年、标题为2个单词,点击Generate后触发错误。
原因分析

Devel 5.x版本的Devel Generate组件引入了Drush\Utils\StringUtils类,但该类属于Drush工具集,当前环境未安装Drush或Drush版本不符合依赖要求,导致类无法被找到。

解决方法

方法1:安装Drush(推荐)

Devel 5.x明确依赖Drush,通过Composer将Drush安装到项目中:

composer require drush/drush

安装完成后刷新页面,重新尝试生成内容即可。

方法2:降级Devel模块到无Drush依赖版本

若无需Drush,可将Devel降级到4.x版本(该版本的Devel Generate不依赖Drush类):

  1. 先在后台卸载已启用的Devel和Devel Generate模块;
  2. 执行Composer命令降级:
composer require 'drupal/devel:^4.0'
  1. 重新启用Devel和Devel Generate组件,再尝试生成测试内容。

方法3:临时代码修复(仅应急使用)

修改ContentDevelGenerate.php第391行,替换Drush的字符串处理逻辑为Drupal原生方法:
原代码片段:

use Drush\Utils\StringUtils;
// ...
$title = StringUtils::title($title);

替换为:

// 直接使用PHP原生函数实现标题格式化
$title = ucwords($title);

注意:此修改会在模块更新后被覆盖,仅作为临时应急方案。

内容的提问来源于stack exchange,提问作者S. Imp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 04:15:43