【Windows-WSL2】composer install と composer updateでエラー
普段使っているPCとは別のPCで git clone
したあとに、PHPUnitを composer install
しようとしたときのエラー
環境
- Windows11
- WSL2
- php 7.4.3
エラー文
it is missing from your system. Install or enable PHP's dom extension.
it is missing from your system. Install or enable PHP's mbstring extension.
解決手順
composer install
しようとしたら下記のエラー
$ composer install Installing dependencies from lock file (including require-dev) Verifying lock file contents can be installed on current platform. Your lock file does not contain a compatible set of packages. Please run composer update. Problem 1 - phar-io/manifest is locked to version 2.0.3 and an update of this package was not requested. - phar-io/manifest 2.0.3 requires ext-dom * -> it is missing from your system. Install or enable PHP's dom extension. Problem 2 - phpunit/php-code-coverage is locked to version 9.2.15 and an update of this package was not requested. - phpunit/php-code-coverage 9.2.15 requires ext-dom * -> it is missing from your system. Install or enable PHP's dom extension. Problem 3 - phpunit/phpunit is locked to version 9.5.19 and an update of this package was not requested. - phpunit/phpunit 9.5.19 requires ext-dom * -> it is missing from your system. Install or enable PHP's dom extension. Problem 4 - theseer/tokenizer is locked to version 1.2.1 and an update of this package was not requested. - theseer/tokenizer 1.2.1 requires ext-dom * -> it is missing from your system. Install or enable PHP's dom extension. To enable extensions, verify that they are enabled in your .ini files: - /etc/php/7.4/cli/php.ini - /etc/php/7.4/cli/conf.d/10-opcache.ini - /etc/php/7.4/cli/conf.d/10-pdo.ini - /etc/php/7.4/cli/conf.d/20-calendar.ini - /etc/php/7.4/cli/conf.d/20-ctype.ini - /etc/php/7.4/cli/conf.d/20-exif.ini - /etc/php/7.4/cli/conf.d/20-ffi.ini - /etc/php/7.4/cli/conf.d/20-fileinfo.ini - /etc/php/7.4/cli/conf.d/20-ftp.ini - /etc/php/7.4/cli/conf.d/20-gettext.ini - /etc/php/7.4/cli/conf.d/20-iconv.ini - /etc/php/7.4/cli/conf.d/20-json.ini - /etc/php/7.4/cli/conf.d/20-phar.ini - /etc/php/7.4/cli/conf.d/20-posix.ini - /etc/php/7.4/cli/conf.d/20-readline.ini - /etc/php/7.4/cli/conf.d/20-shmop.ini - /etc/php/7.4/cli/conf.d/20-sockets.ini - /etc/php/7.4/cli/conf.d/20-sysvmsg.ini - /etc/php/7.4/cli/conf.d/20-sysvsem.ini - /etc/php/7.4/cli/conf.d/20-sysvshm.ini - /etc/php/7.4/cli/conf.d/20-tokenizer.ini You can also run `php --ini` in a terminal to see which files are used by PHP in CLI mode.Alternatively, you can run Composer with `--ignore-platform-req=ext-dom --ignore-platform-req=ext-dom --ignore-platform-req=ext-dom --ignore-platform-req=ext-dom` to temporarily ignore these required extensions.
Please run composer update
とのことなので composer update
してみたら下記のエラー
$ composer update Loading composer repositories with package information Info from https://repo.packagist.org: #StandWithUkraine Updating dependencies Your requirements could not be resolved to an installable set of packages. Problem 1 - phpunit/phpunit[9.5.0, ..., 9.5.19] require ext-dom * -> it is missing from your system. Install or enable PHP's dom extension. - Root composer.json requires phpunit/phpunit ^9.5 -> satisfiable by phpunit/phpunit[9.5.0, ..., 9.5.19]. To enable extensions, verify that they are enabled in your .ini files: - /etc/php/7.4/cli/php.ini - /etc/php/7.4/cli/conf.d/10-opcache.ini - /etc/php/7.4/cli/conf.d/10-pdo.ini - /etc/php/7.4/cli/conf.d/20-calendar.ini - /etc/php/7.4/cli/conf.d/20-ctype.ini - /etc/php/7.4/cli/conf.d/20-curl.ini - /etc/php/7.4/cli/conf.d/20-exif.ini - /etc/php/7.4/cli/conf.d/20-ffi.ini - /etc/php/7.4/cli/conf.d/20-fileinfo.ini - /etc/php/7.4/cli/conf.d/20-ftp.ini - /etc/php/7.4/cli/conf.d/20-gettext.ini - /etc/php/7.4/cli/conf.d/20-iconv.ini - /etc/php/7.4/cli/conf.d/20-json.ini - /etc/php/7.4/cli/conf.d/20-phar.ini - /etc/php/7.4/cli/conf.d/20-posix.ini - /etc/php/7.4/cli/conf.d/20-readline.ini - /etc/php/7.4/cli/conf.d/20-shmop.ini - /etc/php/7.4/cli/conf.d/20-sockets.ini - /etc/php/7.4/cli/conf.d/20-sysvmsg.ini - /etc/php/7.4/cli/conf.d/20-sysvsem.ini - /etc/php/7.4/cli/conf.d/20-sysvshm.ini - /etc/php/7.4/cli/conf.d/20-tokenizer.ini You can also run `php --ini` in a terminal to see which files are used by PHP in CLI mode. Alternatively, you can run Composer with `--ignore-platform-req=ext-dom` to temporarily ignore these required extensions.
it is missing from your system. Install or enable PHP's dom extension.
とのことなので、DOM Extensionをインストールする。
i$ sudo apt-get install php7.4-dom [sudo] password for nakamura: Reading package lists... Done Building dependency tree Reading state information... Done Note, selecting 'php7.4-xml' instead of 'php7.4-dom' The following package was automatically installed and is no longer required: libfwupdplugin1 Use 'sudo apt autoremove' to remove it. The following NEW packages will be installed: php7.4-xml 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 97.6 kB of archives. After this operation, 447 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 php7.4-xml amd64 7.4.3-4ubuntu2.10 [97.6 kB] Fetched 97.6 kB in 1s (68.4 kB/s) Selecting previously unselected package php7.4-xml. (Reading database ... 33161 files and directories currently installed.) Preparing to unpack .../php7.4-xml_7.4.3-4ubuntu2.10_amd64.deb ... Unpacking php7.4-xml (7.4.3-4ubuntu2.10) ... Setting up php7.4-xml (7.4.3-4ubuntu2.10) ... Creating config file /etc/php/7.4/mods-available/dom.ini with new version Creating config file /etc/php/7.4/mods-available/simplexml.ini with new version Creating config file /etc/php/7.4/mods-available/xml.ini with new version Creating config file /etc/php/7.4/mods-available/xmlreader.ini with new version Creating config file /etc/php/7.4/mods-available/xmlwriter.ini with new version Creating config file /etc/php/7.4/mods-available/xsl.ini with new version Processing triggers for php7.4-cli (7.4.3-4ubuntu2.10) ...
からの、 composer update
を再度実行。
$ composer update Loading composer repositories with package information Updating dependencies Your requirements could not be resolved to an installable set of packages. Problem 1 - phpunit/phpunit[9.5.0, ..., 9.5.19] require ext-mbstring * -> it is missing from your system. Install or enable PHP's mbstring extension. - Root composer.json requires phpunit/phpunit ^9.5 -> satisfiable by phpunit/phpunit[9.5.0, ..., 9.5.19]. To enable extensions, verify that they are enabled in your .ini files: - /etc/php/7.4/cli/php.ini - /etc/php/7.4/cli/conf.d/10-opcache.ini - /etc/php/7.4/cli/conf.d/10-pdo.ini - /etc/php/7.4/cli/conf.d/15-xml.ini - /etc/php/7.4/cli/conf.d/20-calendar.ini - /etc/php/7.4/cli/conf.d/20-ctype.ini - /etc/php/7.4/cli/conf.d/20-curl.ini - /etc/php/7.4/cli/conf.d/20-dom.ini - /etc/php/7.4/cli/conf.d/20-exif.ini - /etc/php/7.4/cli/conf.d/20-ffi.ini - /etc/php/7.4/cli/conf.d/20-fileinfo.ini - /etc/php/7.4/cli/conf.d/20-ftp.ini - /etc/php/7.4/cli/conf.d/20-gettext.ini - /etc/php/7.4/cli/conf.d/20-iconv.ini - /etc/php/7.4/cli/conf.d/20-json.ini - /etc/php/7.4/cli/conf.d/20-phar.ini - /etc/php/7.4/cli/conf.d/20-posix.ini - /etc/php/7.4/cli/conf.d/20-readline.ini - /etc/php/7.4/cli/conf.d/20-shmop.ini - /etc/php/7.4/cli/conf.d/20-simplexml.ini - /etc/php/7.4/cli/conf.d/20-sockets.ini - /etc/php/7.4/cli/conf.d/20-sysvmsg.ini - /etc/php/7.4/cli/conf.d/20-sysvsem.ini - /etc/php/7.4/cli/conf.d/20-sysvshm.ini - /etc/php/7.4/cli/conf.d/20-tokenizer.ini - /etc/php/7.4/cli/conf.d/20-xmlreader.ini - /etc/php/7.4/cli/conf.d/20-xmlwriter.ini - /etc/php/7.4/cli/conf.d/20-xsl.ini You can also run `php --ini` in a terminal to see which files are used by PHP in CLI mode. Alternatively, you can run Composer with `--ignore-platform-req=ext-mbstring` to temporarily ignore these required extensions.
次は it is missing from your system. Install or enable PHP's mbstring extension.
とのことなのでインストール。
$ sudo apt-get install php7.4-mbstring [sudo] password for nakamura: Reading package lists... Done Building dependency tree Reading state information... Done The following package was automatically installed and is no longer required: libfwupdplugin1 Use 'sudo apt autoremove' to remove it. The following additional packages will be installed: libonig5 The following NEW packages will be installed: libonig5 php7.4-mbstring 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 539 kB of archives. After this operation, 1696 kB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://archive.ubuntu.com/ubuntu focal/universe amd64 libonig5 amd64 6.9.4-1 [142 kB] Get:2 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 php7.4-mbstring amd64 7.4.3-4ubuntu2.10 [397 kB] Fetched 539 kB in 2s (251 kB/s) Selecting previously unselected package libonig5:amd64. (Reading database ... 33180 files and directories currently installed.) Preparing to unpack .../libonig5_6.9.4-1_amd64.deb ... Unpacking libonig5:amd64 (6.9.4-1) ... Selecting previously unselected package php7.4-mbstring. Preparing to unpack .../php7.4-mbstring_7.4.3-4ubuntu2.10_amd64.deb ... Unpacking php7.4-mbstring (7.4.3-4ubuntu2.10) ... Setting up libonig5:amd64 (6.9.4-1) ... Setting up php7.4-mbstring (7.4.3-4ubuntu2.10) ... Creating config file /etc/php/7.4/mods-available/mbstring.ini with new version Processing triggers for libc-bin (2.31-0ubuntu9.7) ... Processing triggers for php7.4-cli (7.4.3-4ubuntu2.10) ..
これで無事 composer update
ができた
$ composer update Loading composer repositories with package information Updating dependencies Nothing to modify in lock file Writing lock file Installing dependencies from lock file (including require-dev) Nothing to install, update or remove Generating autoload files 26 packages you are using are looking for funding. Use the `composer fund` command to find out more
参考
composerでPHPUnitがインストールできない - 終電23時15分って早くね?
WSL2にcomposerをインストールするのは下記を参考にした