为什么 composer create-project for Drupal 在 WSL2 中失败?

Why does composer create-project for Drupal fail in WSL2?

我是一名试验 WSL2 的 Drupal 网站建设者,我发现使用 composer 创建 Drupal 项目的例程没有完成。

我的 PC 有 16GB RAM 并且允许 composer 无限内存。据我所知,我已为 WSL2 正确配置 Docker。

创建项目进程正常启动,但在安装 drupal/core (9.0.2) 时停止。无论是从源代码还是从缓存下载,这似乎都是如此。相当长一段时间后,该过程将失败。项目文件夹内容大部分不完整

我首先尝试使用 DDEV 的 Drupal 9 配方,一个基于容器的本地开发环境,其中包括作曲家。

不想将矛头指向 DDEV,然后我通过 Homebrew 在 WSL2 的主目录中安装了 composer,并再次尝试,独立于 DDEV 或 Docker。在 运行 composer create-project drupal/recommended-project my_site_name_dir 之后,我发现 composer 以完全相同的方式失败。

Composer 输出如下;

paul@DESKTOP-TQA1I7L:/mnt/c/Users/Paul/Sites/D9$ composer create-project drupal/recommended-project my_site_name_dir 在“./my_site_name_dir”创建一个“drupal/recommended-project”项目 正在安装 drupal/recommended-project (9.0.2)

[Symfony\Component\Process\Exception\ProcessTimedOutException] 进程“git checkout '9.0.2' --” 超过了 300 秒的超时。

create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--repository REPOSITORY] [--repository-url REPOSITORY-URL] [--add-repository] ​​[--dev] [--no-dev] [--no-custom-installers] [--no-scripts] [--no-progress] [--无安全http] [--keep-vcs] [--remove-vcs] [--no-install] [--ignore-platform-reqs] [--] [] [] []

paul@DESKTOP-TQA1I7L:/mnt/c/Users/Paul/Sites/D9$ paul@DESKTOP-TQA1I7L:/mnt/c/Users/Paul/Sites/D9$ composer create-project drupal/recommended-project my_site_name_dir 在“./my_site_name_dir”

创建一个“drupal/recommended-project”项目

[InvalidArgumentException] 项目目录“/mnt/c/Users/Paul/Sites/D9/my_site_name_dir”不为空。

create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--repository REPOSITORY] [--repository-url REPOSITORY-URL] [--add-repository] ​​[--dev] [--no-dev] [--no-custom-installers] [--no-scripts] [--no-progress] [--无安全http] [--keep-vcs] [--remove-vcs] [--no-install] [--ignore-platform-reqs] [--] [] [] []

阅读一些更新的文档后,我现在明白问题是我试图在 .mnt/c/Users/Paul 的 Windows 文件系统下执行此操作,而不是 Linux 位置 /home/paul

除了无错误地完成,性能也得到了极大的提高。

您绝对需要将您的项目放在 WSL2 文件系统上以获得良好的性能,是的。请参阅@MrPaulDriver 的回答,绝对关键。

但我们建议在任何地方都使用 ddev composer。这使得您的作曲家使用与您的项目运行时相同的作曲家设置和 php 版本构建,并且它可以帮助大多数人。因此,甚至不需要在 ddev 主机上安装 php 或 composer。

例如,Drupal 9 Quickstart 显示

mkdir my-drupal9-site
cd my-drupal9-site
ddev config --project-type=drupal9 --docroot=web --create-docroot
ddev start
ddev composer create "drupal/recommended-project"
ddev composer require drush/drush
ddev launch

我想即使在您之前的设置中这对您也有用;它适用于很多地方。

有关更多详细信息,请查看文档中的 DDEV and Composer