作曲家需要 phpoffice/phpspreadsheet 不起作用

Posted

技术标签:

【中文标题】作曲家需要 phpoffice/phpspreadsheet 不起作用【英文标题】:Composer require phpoffice/phpspreadsheet doesn't work 【发布时间】:2018-06-22 18:28:30 【问题描述】:

我想使用包 phpspreadsheet 编写一个脚本。我没有php经验。我正在尝试通过 sudo composer require phpoffice/phpspreadsheet 添加对我的脚本的引用。但它不起作用。我收到错误:安装失败,删除 composer.json....如果不知道它为什么不工作。有什么想法吗?

详细错误:

Your requirements could not be resolved to an installable set of packages.

Problem 1
- Installation request for phpoffice/phpspreadsheet ^1.0 -> satisfiable by phpoffice/phpspreadsheet[1.0.0].
- phpoffice/phpspreadsheet 1.0.0 requires ext-dom * -> the requested PHP extension dom is missing from your system.

To enable extensions, verify that they are enabled in those .ini files:
- /etc/php/7.0/cli/php.ini
- /etc/php/7.0/cli/conf.d/10-mysqlnd.ini
- /etc/php/7.0/cli/conf.d/10-opcache.ini
- /etc/php/7.0/cli/conf.d/10-pdo.ini
- /etc/php/7.0/cli/conf.d/20-calendar.ini
- /etc/php/7.0/cli/conf.d/20-ctype.ini
- /etc/php/7.0/cli/conf.d/20-exif.ini
- /etc/php/7.0/cli/conf.d/20-fileinfo.ini
- /etc/php/7.0/cli/conf.d/20-ftp.ini
- /etc/php/7.0/cli/conf.d/20-gettext.ini
- /etc/php/7.0/cli/conf.d/20-iconv.ini
- /etc/php/7.0/cli/conf.d/20-json.ini
- /etc/php/7.0/cli/conf.d/20-mcrypt.ini
- /etc/php/7.0/cli/conf.d/20-mysqli.ini
- /etc/php/7.0/cli/conf.d/20-pdo_mysql.ini
- /etc/php/7.0/cli/conf.d/20-phar.ini
- /etc/php/7.0/cli/conf.d/20-posix.ini
- /etc/php/7.0/cli/conf.d/20-readline.ini
- /etc/php/7.0/cli/conf.d/20-shmop.ini
- /etc/php/7.0/cli/conf.d/20-sockets.ini
- /etc/php/7.0/cli/conf.d/20-sysvmsg.ini
- /etc/php/7.0/cli/conf.d/20-sysvsem.ini
- /etc/php/7.0/cli/conf.d/20-sysvshm.ini
- /etc/php/7.0/cli/conf.d/20-tokenizer.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.

【问题讨论】:

你可能不应该使用sudo。通常,composer 依赖项将安装在项目空间中,而不是作为超级用户。但是,如果您在作曲家输出中向上滚动,应该会有更多信息。我刚试了一下,得到 phpoffice/phpspreadsheet 1.0.0 需要 ext-zip * -> 系统中缺少请求的 PHP 扩展 zip,这意味着我没有安装 zip 扩展。您可能有这个问题或其他类似问题。 我使用的语句sudo Composer require phpoffice/phpspreadsheet 我的意思是你应该只使用composer require phpoffice/phpspreadsheet而不使用sudo。这样做并发布完整的错误输出。它应该提供的不仅仅是“安装失败” 是的,我收到了:failed to open stream: Permission denied 好的,那么您可能在尝试安装它的位置没有写入权限,并且sudo 必要的。所以请使用sudo,但要包含完整的错误输出(编辑您的原始帖子而不是评论)。 【参考方案1】:

所以我应该安装

sudo apt install php-xml

sudo apt install php7.0-gd

sudo apt install php7.0-mbstring

sudo apt install php-zip

【讨论】:

为了连贯性,sudo apt install php7.0-xml php7.0-gd php7.0-mbstring php7.0-zip 有人能安装php7.2 的zip 扩展吗?它一直说 E: 无法找到包 php7.2-zip E: 找不到任何包 regex 'php7.2-zip' 我尝试了很多变体,但都没有工作,我有 PHP 版本 7.2.17-1+ubuntu14.04.1+deb.sury.org+3 非常感谢!这运作良好。由于我的是php7.2,我将php7.0 更改为php7.2,其他两个相同。然后它就完美了! 最好为每个命令指定 php 版本(php7.3-xmlphp7.3-gdphp7.3-mbstringphp7.3-zip)。 该命令也解决了我的问题。非常感谢。【参考方案2】:

请阅读错误信息“需要 ext-dom”。它抱怨缺少包或在这种情况下是 php 扩展。通常,当您无法安装软件包时,您可以查看其 composer.json 中所需的软件包以查看完整列表。

phpoffice(在本例中为 1.1.0)需要以下内容:

   "require": 
        "php": "^5.6|^7.0",
        "ext-ctype": "*",
        "ext-dom": "*",
        "ext-gd": "*",
        "ext-iconv": "*",
        "ext-libxml": "*",
        "ext-mbstring": "*",
        "ext-SimpleXML": "*",
        "ext-xml": "*",
        "ext-xmlreader": "*",
        "ext-xmlwriter": "*",
        "ext-zip": "*",
        "ext-zlib": "*",
        "psr/simple-cache": "^1.0"
    ,
    "require-dev": 
        "tecnickcom/tcpdf": "^6.2",
        "squizlabs/php_codesniffer": "^2.7",
        "phpunit/phpunit": "^5.7",
        "dompdf/dompdf": "^0.8.0",
        "mpdf/mpdf": "^7.0.0",
        "jpgraph/jpgraph": "^4.0",
        "friendsofphp/php-cs-fixer": "@stable"
    ,

【讨论】:

【参考方案3】:

如果你正在使用

$sheet->setAutoFilter(); 

试着评论这个来测试

//$sheet->setAutoFilter();

为我工作

【讨论】:

【参考方案4】:

在 Centos 中:

sudo yum install gd gd-devel php-gd

【讨论】:

【参考方案5】:

错误信息显示未命中。我有同样的问题,通过这样做解决它。 请阅读错误信息“需要 ext-dom”。

请安装php7.1-dom

在我的例子中,PHP 是 7.1 下面是我做的,现在正在工作。

sudo apt-get install php7.1 php7.1-cli php7.1-common php7.1-json php7.1-opcache php7.1-mysql php7.1-mbstring php7.1-mcrypt php7.1-压缩 php7.1-fpm sudo apt install php-xml php7.1-gd php7.1-dom

【讨论】:

【参考方案6】:

sudo apt install php-xml

sudo apt install php7.0-gd

sudo apt install php7.0-mbstring

sudo apt install php-zip

【讨论】:

在我的情况下,我缺少 php7.3-zip,安装后错误消失了【参考方案7】:

在运行 composer install/update 或安装新包时也会添加

--ignore-platform-reqs

在命令结束时,为不同环境添加/安装成功。

【讨论】:

【参考方案8】:

类型

 php -v

如果是php7类型

sudo apt install php-xml
sudo apt install php7.0-gd
sudo apt install php7.0-mbstring
sudo apt install php-zip

如果是php8类型

sudo apt install php-xml
sudo apt install php8.0-gd
sudo apt install php8.0-mbstring
sudo apt install php-zip

【讨论】:

【参考方案9】:

我遇到了同样的问题,我通过这样做来解决它

composer install --ignore-platform-reqs

【讨论】:

有什么解释吗?【参考方案10】:

我遇到了同样的问题,我用命令composer install --ignore-platform-reqs解决了

【讨论】:

以上是关于作曲家需要 phpoffice/phpspreadsheet 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

作曲家需要 laravel/dusk 错误

如何知道 Laravel 包需要哪些作曲家依赖项?

作曲家需要本地包

作曲家需要 phpoffice/phpspreadsheet 不起作用

所以作曲家需要 rebing/graphql-laravel 失败

没有作曲家的枪口