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