Laravel 7 w/ Laravel Excel:您的需求无法解决为一组可安装的软件包

Posted

技术标签:

【中文标题】Laravel 7 w/ Laravel Excel:您的需求无法解决为一组可安装的软件包【英文标题】:Laravel 7 w/ Laravel Excel: Your requirements could not be resolved to an installable set of packages 【发布时间】:2020-06-17 02:28:22 【问题描述】:

我正在尝试将 Laravel Excel 安装在 Larevel 7 中,并使用 PHP 7.4Docker 容器 中运行> 但我收到了这个错误,我不知道如何解决。

e-learning-app/src on  dev [$!] via ⬢ v12.8.1 via ???? v7.4.4
➜ docker:composer require maatwebsite/excel
Starting e-learning-app-php ... done
Using version ^3.1 for maatwebsite/excel
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - maatwebsite/excel 3.1.x-dev requires phpoffice/phpspreadsheet ^1.11 -> satisfiable by phpoffice/phpspreadsheet[1.11.0, 1.12.0, 1.13.0].
    - maatwebsite/excel 3.2.x-dev requires phpoffice/phpspreadsheet ^1.11 -> satisfiable by phpoffice/phpspreadsheet[1.11.0, 1.12.0, 1.13.0].
    - maatwebsite/excel 3.1.0 requires phpoffice/phpspreadsheet ^1.4 -> satisfiable by phpoffice/phpspreadsheet[1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.13.0, 1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.1 requires phpoffice/phpspreadsheet ^1.4 -> satisfiable by phpoffice/phpspreadsheet[1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.13.0, 1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.10 requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.13.0, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.11 requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.13.0, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.12 requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.13.0, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.13 requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.13.0, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.14 requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.13.0, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.15 requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.13.0, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.16 requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.13.0, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.17 requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.13.0, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.18 requires phpoffice/phpspreadsheet ^1.10 -> satisfiable by phpoffice/phpspreadsheet[1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.13.0].
    - maatwebsite/excel 3.1.19 requires phpoffice/phpspreadsheet ^1.10 -> satisfiable by phpoffice/phpspreadsheet[1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.13.0].
    - maatwebsite/excel 3.1.2 requires phpoffice/phpspreadsheet ^1.4 -> satisfiable by phpoffice/phpspreadsheet[1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.13.0, 1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.3 requires phpoffice/phpspreadsheet ^1.4 -> satisfiable by phpoffice/phpspreadsheet[1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.13.0, 1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.4 requires phpoffice/phpspreadsheet ^1.4 -> satisfiable by phpoffice/phpspreadsheet[1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.13.0, 1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.5 requires phpoffice/phpspreadsheet ^1.4 -> satisfiable by phpoffice/phpspreadsheet[1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.13.0, 1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.6 requires phpoffice/phpspreadsheet ^1.4 -> satisfiable by phpoffice/phpspreadsheet[1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.13.0, 1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.7 requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.13.0, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.8 requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.13.0, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.9 requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.13.0, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - phpoffice/phpspreadsheet 1.9.0 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - phpoffice/phpspreadsheet 1.8.2 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - phpoffice/phpspreadsheet 1.8.1 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - phpoffice/phpspreadsheet 1.8.0 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - phpoffice/phpspreadsheet 1.7.0 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - phpoffice/phpspreadsheet 1.6.0 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - phpoffice/phpspreadsheet 1.5.2 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - phpoffice/phpspreadsheet 1.5.1 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - phpoffice/phpspreadsheet 1.5.0 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - phpoffice/phpspreadsheet 1.4.1 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - phpoffice/phpspreadsheet 1.4.0 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - phpoffice/phpspreadsheet 1.13.0 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - phpoffice/phpspreadsheet 1.12.0 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - phpoffice/phpspreadsheet 1.11.0 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - phpoffice/phpspreadsheet 1.10.1 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - phpoffice/phpspreadsheet 1.10.0 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - Installation request for maatwebsite/excel ^3.1 -> satisfiable by maatwebsite/excel[3.1.0, 3.1.1, 3.1.10, 3.1.11, 3.1.12, 3.1.13, 3.1.14, 3.1.15, 3.1.16, 3.1.17, 3.1.18, 3.1.19, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.1.6, 3.1.7, 3.1.8, 3.1.9, 3.1.x-dev, 3.2.x-dev].

  To enable extensions, verify that they are enabled in your .ini files:
    - /usr/local/etc/php/php-cli.ini
    - /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
    - /usr/local/etc/php/conf.d/docker-php-ext-zip.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

Installation failed, reverting ./composer.json to its original content.

e-learning-app/src on  dev [$!] via ⬢ v12.8.1 via ???? v7.4.4 took 3m 1s
➜

我已经通过运行在容器内手动安装了 gd

apt-get update && apt-get install -y --no-install-recommends \
build-essential \
zlib1g-dev \
libpng-dev \
&& docker-php-ext-configure gd --enable-gd && docker-php-ext-install -j$(nproc) gd

但问题仍然存在,当我执行php -m 时,似乎安装了 gd

# php -m
[PHP Modules]
Core
curl
pdo_mysql
...
zlib
gd

[Zend Modules]

#

但是当我通过我的作曲家容器执行composer show -p 时,gd 扩展名不会出现:

e-learning-app on  dev [$!?] on ???? v19.03.8 took 1h 10s
➜ docker:composer show -p
Starting e-learning-app-php ... done
composer-plugin-api  1.1.0    The Composer Plugin API
composer-runtime-api 1.0.0    The Composer Runtime API
ext-ctype            7.4.6    The ctype PHP extension
ext-curl             7.4.6    The curl PHP extension
ext-date             7.4.6    The date PHP extension
ext-dom              20031129 The dom PHP extension
ext-fileinfo         7.4.6    The fileinfo PHP extension
ext-filter           7.4.6    The filter PHP extension
ext-ftp              7.4.6    The ftp PHP extension
ext-hash             7.4.6    The hash PHP extension
ext-iconv            7.4.6    The iconv PHP extension
ext-json             7.4.6    The json PHP extension
ext-libxml           7.4.6    The libxml PHP extension
ext-mbstring         7.4.6    The mbstring PHP extension
ext-mysqlnd          0        The mysqlnd PHP extension (actual version: mysqlnd 7.4.6)
ext-openssl          7.4.6    The openssl PHP extension
ext-pcre             7.4.6    The pcre PHP extension
ext-PDO              7.4.6    The PDO PHP extension
ext-pdo_sqlite       7.4.6    The pdo_sqlite PHP extension
ext-Phar             7.4.6    The Phar PHP extension
ext-posix            7.4.6    The posix PHP extension
ext-readline         7.4.6    The readline PHP extension
ext-Reflection       7.4.6    The Reflection PHP extension
ext-session          7.4.6    The session PHP extension
ext-SimpleXML        7.4.6    The SimpleXML PHP extension
ext-sodium           7.4.6    The sodium PHP extension
ext-SPL              7.4.6    The SPL PHP extension
ext-sqlite3          7.4.6    The sqlite3 PHP extension
ext-tokenizer        7.4.6    The tokenizer PHP extension
ext-xml              7.4.6    The xml PHP extension
ext-xmlreader        7.4.6    The xmlreader PHP extension
ext-xmlwriter        7.4.6    The xmlwriter PHP extension
ext-zip              1.15.6   The zip PHP extension
ext-zlib             7.4.6    The zlib PHP extension
lib-curl             7.67.0   The curl PHP library
lib-libxml           2.9.10   The libxml PHP library
lib-openssl          1.1.1.7  OpenSSL 1.1.1g  21 Apr 2020
lib-pcre             10.34    The pcre PHP library
php                  7.4.6    The PHP interpreter
php-64bit            7.4.6    The PHP interpreter, 64bit
php-ipv6             7.4.6    The PHP interpreter, with IPv6 support

而且我不知道为什么会这样。我尝试了很多东西都没有成功...

这是我的Dockerfile PHP

FROM php:7.4-fpm

WORKDIR /var/www/html

RUN docker-php-ext-install pdo_mysql

这是我docker-compose.yml 中的 php 部分:

  php:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: e-learning-app-php
    volumes:
      - ./src:/var/www/html
    ports:
      - "9007:9000"
    networks:
      - laravel

还有我的作曲部分:

composer:
    image: composer:latest
    container_name: e-learning-app-composer
    volumes:
      - ./src:/var/www/html
    working_dir: /var/www/html
    depends_on:
      - php
    networks:
      - laravel

帮助。

【问题讨论】:

【参考方案1】:

composer 需要 maatwebsite/excel --ignore-platform-reqs

试试这个。这对我来说很好用

【讨论】:

以上是关于Laravel 7 w/ Laravel Excel:您的需求无法解决为一组可安装的软件包的主要内容,如果未能解决你的问题,请参考以下文章

无法在 laravel 5.7 中定义关系

laravel 队列守护进程邮件因 SSL 错误而停止运行

Laravel Excel 实现 Excel-CSV 文件导入导出功能

Laravel /w 离子 JWT 身份验证

为啥我在 laravel 到 fontawesome 的路径错误?

未找到 Laravel 5.7 电子邮件验证类“DOMDocument”