Incompatibility with Magento >= 2.4.0 (Imagick missing) #357
Open
Description
Preconditions
- Magento >= 2.4.0
- magento-cloud-docker images with version between 1.3.2 and 1.3.5 (not tested on other versions), including
magento/magento-cloud-docker-php:8.1-fpm-1.3.5
andmagento/magento-cloud-docker-php:8.1-cli-1.3.5
Steps to reproduce
Try to upgrade to Magento 2.4.x by following the steps described in the Perform an upgrade guide:
- Use PHP 7.4 in the
docker-compose.yml
file - Run
composer require magento/composer-root-update-plugin ~2.0 --no-update
- Run
composer update
- Update the
docker-compose.yml
file to use PHP 8.1-1.3.5 (or any other version like 1.3.1, 1.3.4 etc.) - Restart the docker containers:
docker-compose up -d
- Connect to the deploy container:
bin/magento-docker bash
- Run
composer require-commerce magento/product-community-edition 2.4.4 --no-update
- Run
composer update
Expected result
- No error is thrown when starting the deploy container
- The
composer update
command works fine
Actual result
- The following errors are thrown when accessing the deploy container (with
bin/magento-docker bash
):
error: 'imagick' does not exist
usage: /usr/local/bin/docker-php-ext-enable [options] module-name [module-name ...]
ie: /usr/local/bin/docker-php-ext-enable gd mysqli
/usr/local/bin/docker-php-ext-enable pdo pdo_mysql
/usr/local/bin/docker-php-ext-enable --ini-name 0-apc.ini apcu apc
Possible values for module-name:
bcmath.so blackfire.so bz2.so calendar.so exif.so gd.so gettext.so gmp.so gnupg.so intl.so ldap.so mailparse.so msgpack.so mysqli.so oauth.so opcache.so pcntl.so pcov.so pdo_mysql.so pspell.so raphf.so redis.so shmop.so soap.so sockets.so sodium.so sysvmsg.so sysvsem.so sysvshm.so tidy.so xdebug.so xmlrpc.so xsl.so yaml.so zip.so zookeeper.so
Some of the above modules are already compiled into PHP; please check
the output of "php -i" to see which modules are already loaded.
- The
composer update
command fails with the following errors:
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Root composer.json requires magento/product-community-edition 2.4.4 -> satisfiable by magento/product-community-edition[2.4.4].
- magento/product-community-edition 2.4.4 requires ext-gd * -> it is missing from your system. Install or enable PHP's gd extension.
Problem 2
- magento/magento2-functional-testing-framework[3.7.0, ..., 3.8.0] require ext-intl * -> it is missing from your system. Install or enable PHP's intl extension.
- Root composer.json requires magento/magento2-functional-testing-framework ^3.7 -> satisfiable by magento/magento2-functional-testing-framework[3.7.0, ..., 3.8.0].
To enable extensions, verify that they are enabled in your .ini files:
-
- /usr/local/etc/php/conf.d/blackfire.ini
- /usr/local/etc/php/conf.d/gnupg.ini
- /usr/local/etc/php/conf.d/zz-magento.ini
- /usr/local/etc/php/conf.d/zz-mail.ini
- /usr/local/etc/php/conf.d/zz-pcov-settings.ini
- /usr/local/etc/php/conf.d/zz-xdebug-settings.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-gd --ignore-platform-req=ext-intl` to temporarily ignore these required extensions.
Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
Additional information
This is a followup of the issue #344 that I closed thinking it was solved, but removing the imagick
extension from the PHP_EXTENSION in the docker-compose.yml
file doesn't load imagick in the Docker image.