mac10.15 PHP 安装zip扩展[安装其他扩展也可以用到]

在用composer安装项目时报错了,出现了以下的错误:

phpoffice/phpspreadsheet 1.9.0 requires ext-zip * -> the requested PHP exten

发现这个问题是php缺少zip的扩展,于是就折腾起来了。
mac本身就是安装了php的,所以在终端使用的php命令是mac默认安装的版本。

1、查看MAC 10.15自带的php版本,7.3.11的版本

PHP 7.3.11 (cli) (built: Feb 29 2020 02:50:36) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.11, Copyright (c) 1998-2018 Zend Technologies

2、首先下载扩展安装包,

[http://pecl.php.net/get/zip](http://pecl.php.net/get/zip)

3、下载后,进入下载目录,然后解压

tar -zvxf zip-1.18.2

解压后得到zip-1.18.2

cd zip-1.18.2

4、执行

如果出现以下错误:

grep: /usr/include/php/main/php.h: No such file or directory
grep: /usr/include/php/Zend/zend_modules.h: No such file or directory
grep: /usr/include/php/Zend/zend_extensions.h: No such file or directory
Configuring for:
PHP Api Version:
Zend Module Api No:
Zend Extension Api No:
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

a、错误提示没有找到autoconf,先安装这个

brew install autoconf

b、处理另一个错误

sudo ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/ /usr

这里可能会出现错误:
①没有操作权限,需要先关闭系统安全,报错:

ln: /usr/include: Operation not permitted

操作如下:

1.先重启您的Mac电脑,并在开机时长按command + R
2.进入之后,在上面菜单栏找到终端,执行代码:csrutil disable,关闭系统保护,然后再重启
PS:如果您后面想重新开启系统保护,则再执行:csrutil enable

②文件权限问题

ln: /usr/include: Read-only file system

需执行以下命令

sudo mount -uw /

5、再执行命令

sudo phpize

出现以下的结果,说明成功了

Configuring for:
PHP Api Version:         20180731
Zend Module Api No:      20180731
Zend Extension Api No:   320180731

6、指定路径,首先查看php-config的路径

which php-config

然后执行命令

./configure --with-php-config=/usr/bin/php-config(你的php-config路径)

这里可能会出现以下错误:

checking for libzip... not found
configure: error: Please reinstall the libzip distribution

所以需要先安装libzip,执行以下命令:

brew install libzip

安装完libzip后,需要再执行./configure这行命令
7、安装,执行命令

sudo make
sudo make install

出现

Installing shared extensions:     /usr/lib/php/extensions/no-debug-non-zts-20180731/

说明扩展安装成功了。
8、最后需要在php.ini中开启拓展
mac默认目录为/private/etc/php.ini.default,需要复制,改名为php.ini

cd /private/etc
sudo cp php.ini.default  php.ini

然后在php.ini添加一行

extension=zip.so

9、查看zip模块,出现zip则成功了

php -m |grep zip
9 声望
0 粉丝
0 条评论
推荐阅读
如何使用 PHPStorm 进行优雅的项目开发?
PHP Storm 这个开发工具,很多 phper 应该有所耳闻,甚至也有不少人使用其作为生产工具,但是很多人都没有最大限度的使用它,本文就来总结一些优雅开发的小技巧。

唯一丶45阅读 4.8k评论 7

怎样用 PHP 来实现枚举?
在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。枚举是一个被命名的整型常数的集合,枚举在日常生活中很常见,...

唯一丶25阅读 6.4k评论 4

PHP转Go实践:xjson解析神器「开源工具集」
我和劲仔都是PHP转Go,身边越来越多做PHP的朋友也逐渐在用Go进行重构,重构过程中,会发现php的json解析操作(系列化与反序列化)是真的香,弱类型语言的各种隐式类型转换,很大程度的减低了程序的复杂度。

王中阳Go10阅读 1.9k评论 2

封面图
图片防盗链破解 解决图片防盗链问题 反向代理
当客户端(浏览器)向服务器请求内容的时候,会提交一个header,这个header中包含了如:浏览器信息、cookie等内容,那么有一个叫referer的东东,也包含在这里面。

TANKING7阅读 11.3k评论 5

Git操作不规范,战友提刀来相见!
年终奖都没了,还要扣我绩效,门都没有,哈哈。这波骚Git操作我也是第一次用,担心闪了腰,所以不仅做了备份,也做了笔记,分享给大家。问题描述小A和我在同时开发一个功能模块,他在优化之前的代码逻辑,我在开...

王中阳Go5阅读 2.3k评论 2

封面图
两分钟小技巧!如何阻止 macOS 的触底弹性滚动和双指手势导航
通常情况下,反弹效果可以反映出是否滚动到了边界,让滚动体验更加丝滑,算是一种体验的提升,但是如果页面总有fixed定位元素,同样也会受到影响,在视觉上不是那么美观,那有没有办法阻止呢?

XboxYan5阅读 1.5k

封面图
工具篇:iTerm与Zsh
iTerm2支持许多的主题配色,可以自己定义,也可以参考网上现成的主题配色。我个人比较喜欢draculatheme配色。支持item,vim,phpstorm , 下方存在主题官网路径,按照教程安装即可。

super白4阅读 4.7k

9 声望
0 粉丝
宣传栏