Composer安装Drush教程 Drupal开发工具配置指南【实操】

11次阅读

Drush 8+必须通过composer在每个Drupal项目中单独安装,禁用全局安装;推荐执行composer require –dev drush/drush:^12,使用vendor/bin/drush调用,windows用户需用php vendorbindrush.php。

Composer安装Drush教程 Drupal开发工具配置指南【实操】

Drush 8 及以上版本必须通过 Composer 安装,直接下载 Phar 文件或全局 composer global require 已不再推荐——它会污染全局依赖、引发版本冲突,且 Drupal 9+/10 项目中无法正确解析命令。

为什么不能用 composer global require drush/drush

全局安装会让 Drush 加载所有已安装的 Composer 包的 autoloader,极易与项目内 Drupal 的依赖(如 symfony 组件版本)发生冲突。常见表现:

  • 执行 drush cr 报错 class 'SymfonyComponentconsoleapplication' not found
  • drush status 显示 PHP 版本正常,但实际调用的是系统级而非项目级 autoloader
  • 在多项目环境中,一个项目升级 Drush 后,其他项目突然命令失效

正确做法是:每个 Drupal 项目单独管理 Drush 依赖。

在已有 Drupal 项目中安装 Drush(推荐方式)

确保你已在项目根目录(即含 composer.jsonweb/docroot/ 的目录),然后运行:

composer require --dev drush/drush:^12

说明:

  • --dev 表示 Drush 是开发依赖,不会被部署到生产环境(符合安全规范)
  • Drush 12 是目前对 Drupal 10 最兼容的稳定版;若项目为 Drupal 9.5+,也可用 ^11,但避免 ^10(已 EOL)
  • 安装后,Drush 可执行文件位于 vendor/bin/drush,建议直接使用该路径或加 ./vendor/bin/ 前缀调用

验证 Drush 是否识别当前 Drupal 站点

Drush 必须能自动发现 web/(或 docroot/)下的 Drupal 核心和 settings.php。常见失败原因:

  • 未在 Drupal 项目根目录执行命令(例如误在 web/ 内运行 drush cr
  • settings.php 权限为只读,或包含语法错误导致 Drupal 自身无法加载
  • 项目使用了非标准目录结构(如 public/ 替代 web/),需手动指定:drush --root=public --uri=https://example.com cr

成功识别后,drush status 应显示 Drupal versionSite URIdatabase hostname 等字段,而非报错 Could not find a Drupal settings.php file

Windows 用户注意 PATH 与符号链接问题

Windows 默认不支持 Composer 自动生成的 unix 风格符号链接,vendor/bin/drush 可能是 .bat 文件但无法正确转发参数。解决方案:

  • 始终用完整路径调用:php vendorbindrush.php cr(注意是 .php 后缀)
  • 或改用 php -d variables_order=EGPCS ./vendor/autoload.php ./vendor/drush/drush/drush.php cr(绕过 bin wrapper)
  • 禁用 git bash 的 Windows 路径转换(在终端中执行 export MSYS_NO_PATHCONV=1

别指望 drush 命令能像 linux/macOS 那样无前缀运行——这是 Windows 下 Composer + Drush 的固有限制,不是配置错了。

text=ZqhQzanResources