3

在用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

xuxchen
9 声望0 粉丝