为Mac安装ext-zip

时间:2019-10-08 16:37:11

标签: laravel macos composer-php macos-catalina

我正在尝试运行作曲家更新,出现以下错误

Problem 1
    - The requested PHP extension ext-zip * is missing from your system. Install or enable PHP's zip extension.
  Problem 2
    - maatwebsite/excel 3.1.10 requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[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.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.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.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.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.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.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.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.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.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.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.x-dev requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.2.x-dev requires phpoffice/phpspreadsheet ^1.6 -> satisfiable by phpoffice/phpspreadsheet[1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.8.2, 1.9.0].
    - maatwebsite/excel 3.1.0 requires phpoffice/phpspreadsheet ^1.4 -> satisfiable by phpoffice/phpspreadsheet[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.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.2 requires phpoffice/phpspreadsheet ^1.4 -> satisfiable by phpoffice/phpspreadsheet[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.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.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.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.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].
    - phpoffice/phpspreadsheet 1.9.0 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - phpoffice/phpspreadsheet 1.8.2 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - phpoffice/phpspreadsheet 1.8.1 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - phpoffice/phpspreadsheet 1.8.0 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - phpoffice/phpspreadsheet 1.7.0 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - phpoffice/phpspreadsheet 1.6.0 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - phpoffice/phpspreadsheet 1.5.2 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - phpoffice/phpspreadsheet 1.5.1 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - phpoffice/phpspreadsheet 1.5.0 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - phpoffice/phpspreadsheet 1.4.1 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - phpoffice/phpspreadsheet 1.4.0 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - Installation request for maatwebsite/excel ^3.1.0 -> 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.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].

when running作曲家更新`

一夜之间,我犯了我一生的错误,并允许我的Mac自动更新OS..so,现在我在macOS Catalina中。

我尝试添加

   "require": {
  "ext-zip": "*",}

到我的composer.json ..,但未下载该扩展名。.

我现在如何运行composer更新,将对您有所帮助。

11 个答案:

答案 0 :(得分:63)

将Mac更新到Catalina之后,我遇到了同样的问题。这是对我有用的。

brew update
brew install php@7.3
brew link php@7.3

然后重新加载控制台。

它将安装带有zip模块的php 7.3.10。您可以使用php -v检查版本,并使用php -m查看模块。

答案 1 :(得分:19)

以下命令修复了macOS Catalina上的问题

brew link php@7.3 --force

答案 2 :(得分:15)

2020年3月10日,它对我有用:

brew install php  

这是有关PHP的唯一一条有效命令。 因此,我认为不建议使用上一篇文章中显示的命令。

答案 3 :(得分:14)

如果brew链接不适合您,请检查您安装的php版本:

ls /usr/local/opt/php*

在这里,您将看到这样的版本:

/usr/local/opt/php@7.3/bin:$PATH

应该给您类似的输出

/usr/local/opt/php@7.3:
INSTALL_RECEIPT.json        include
LICENSE                     lib
NEWS                        pecl
README.md                   sbin
bin                         share
homebrew.mxcl.php@7.3.plist

现在,您只需要将其链接到$ PATH即可,该操作可以通过以下方式完成:

echo 'export PATH="/usr/local/opt/php@7.3/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/usr/local/opt/php@7.3/sbin:$PATH"' >> ~/.zshrc
source ~/.zshrc

注意:我正在使用.zshrc,因为这是我的终端设置。如果您是bash,请相应使用。

您可以通过运行以下命令检查哪个版本的php现在已链接到您的MacOS:

which php

这应该给您输出:

/usr/local/opt/php@7.3/bin/php

就是这样。现在,如果您尝试作曲家更新,它不会给您扩展问题。

来源(部分):https://medium.com/@jjdanek/installing-php-extensions-on-mac-after-homebrew-acfddd6be602

答案 4 :(得分:6)

2020-05-16更新

就像@ marc-alexander所说,这是一个不好的做法。如果不确定自己在做什么,则不应使用--ignore-platform-reqs选项。

我认为该选项将忽略平台要求,并安装软件包的特定版本。但实际上,它将忽略平台要求,并安装软件包的最高可用版本

因此,如果您需要缺少的PHP扩展名,则应该安装(或启用)

参考:ignore-platform-reqs installs dev-master instead of correct version

原始

如果您不需要ext-zip(例如,您只想做一些快速修复),则可以使用--ignore-platform-reqs选项忽略要求:

$ composer update --ignore-platform-reqs

答案 5 :(得分:4)

brew install php期间,我遇到了python symlink问题。

/usr/local/Frameworks不存在,所以我必须创建它: sudo mkdir /usr/local/Frameworks

cd /usr/local/

然后我要把它切成丝: sudo chown -R myuser:admin Frameworks

我基于/usr/local中其余文件夹的权限设置。

然后我可以运行brew link python。 然后我再次运行brew install php,它完成了。

php -v现在给了我php 7.3.10,比我想的要早php 7.3.18。

答案 6 :(得分:4)

这对我有用

brew update brew install php@7.3 brew link php@7.3 brew link php@7.3 --force

希望有帮助

答案 7 :(得分:2)

除了强制链接之外,您还可以解决MacOS Catalina中的问题

通过将php二进制路径添加到您的bash配置文件中,例如:

echo 'export PATH="/usr/local/opt/php@7.3/bin:$PATH"' >> ~/.bash_profile
echo 'export PATH="/usr/local/opt/php@7.3/sbinbin:$PATH"' >> ~/.bash_profile

答案 8 :(得分:1)

就我而言,我必须简单地

brew link --overwrite php

答案 9 :(得分:1)

正如其他用户已经提到的:此错误通常意味着您的 PATH 变量设置不正确,因此终端找不到某些 MAMP 二进制文件。

外壳配置

我在 .zshrc(或 .bashrc)配置文件中使用以下代码为当前 PHP 版本设置正确的路径:

export PHP_VERSION=$(php -r 'echo PHP_VERSION;')
export PATH="/Applications/MAMP/Library/bin/:$PATH"
export PATH="/Applications/MAMP/bin/php/php$PHP_VERSION/bin/:$PATH"

详情

  • export PHP_VERSION=$(php -r 'echo PHP_VERSION;') 这一行从当前 PHP 解释器中获取 PHP 版本。之后,您可以在任何 shell 脚本中访问 $PHP_VERSION
  • export PATH="/Applications/MAMP/Library/bin/:$PATH" 这是 MAMP 集成工作所需的标准路径
  • export PATH="/Applications/MAMP/bin/php/php$PHP_VERSION/bin/:$PATH" 这是重要的部分,它将正确的 phpX.Y.Z 文件夹添加到路径列表中。这一行使用了我们在上面第一行中获取的 $PHP_VERSION

检查

将上述代码段添加到 .zshrc(或 .bashrc)后,您需要通过运行以下命令加载更新的 shell 配置文件

source ~/.zshrc   # or ~/.bashrc

最后,您可以快速检查一下 PATH 值是否正确:

echo -e ${PATH//:/\\n}

# Output:
...
/Applications/MAMP/bin/php/php7.4.12/bin/    ← this line contains the PHP version
/Applications/MAMP/Library/bin/
...

答案 10 :(得分:0)

我知道这个线程的回答是正确的,我用这种方法做这些事情:

  1. brew link php@7.3显示使用提示
    echo 'export PATH="/usr/local/opt/php@7.3/bin:$PATH"' >> ~/.zshrc echo 'export PATH="/usr/local/opt/php@7.3/sbin:$PATH"' >> ~/.zshrc

  2. 在终端中,echo 'export PATH="/usr/local/opt/php@7.3/bin:$PATH"' >> ~/.zshrc输入

  3. 在终端中,echo 'export PATH="/usr/local/opt/php@7.3/sbin:$PATH"' >> ~/.zshrc输入

  4. 下一步执行以下操作:source ~/.zshrc

  5. 执行which php的结果必须显示/usr/local/opt/php@7.3/bin/php

  6. 如果显示 Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/Cellar/composer/1.9.2/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52,请
  7. 重试 composer update 。 请使用memory_limit = -1

    更改php.ini限制
  8. 尝试搜索php.ini,输入终端/usr/local/opt/php@7.3/bin/php --ini,结果必须显示:配置文件(php.ini) Path: /usr/local/etc/php/7.3 Loaded Configuration File: /usr/local/etc/php/7.3/php.ini Scan for additional .ini files in: /usr/local/etc/php/7.3/conf.d Additional .ini files parsed: /usr/local/etc/php/7.3/conf.d/ext-opcache.ini

  9. nano /usr/local/etc/php/7.3/php.ini,附加me​​mory_limit = -1,保存

  10. 重新启动php

  11. 重新执行作曲家更新。

希望我的回答可以为您提供帮助。