注意

1. 如果pecl收录了你需要的扩展,例如mbstring,即可通过以下方法来安装扩展:
sudo pecl search mbstring
sudo pecl install mbstring

很无奈,现在PHP官方的pecl和pear姐妹花已经落魄了,很难装到我们需要的扩展。

 

2. 如果没有收录,则需要到https://www.php.net/downloads下载当前本地php版本对应的安装包,
需要一模一样的版本号,如果没有,请下载官方历史版本文件,例如
https://www.php.net/distributions/php-7.3.13.tar.bz2,修改版本号即可
解压,进入./ext/mbstring文件夹,开始自行编译安装
,例如:

# 请自行修改版本号
curl -O https://www.php.net/distributions/php-7.4.7.tar.bz2
tar -jxvf php-74.7.tar.bz2
cd php-7.4.7
cd ext/
ls
cd mbstring/

# 注意:phpize路径=你系统当前phpize文件的绝对路径,请使用locate phpize来查找
/usr/local/bin/phpize

# 注意:php-config路径=你系统当前php-config文件的绝对路径,请使用locate php-config来查找
# 如果最后提示错误:The pkg-config script could not be found or is too old.  请使用brew install pkg-config来安装先
./configure –with-php-config=/usr/local/bin/php-config
make
make test
sudo make install
编译完成,会提示新生成的so文件
修改php.ini,开始加载这个so扩展:extension=mbstring.so
sudo apachectl restart

 

Mac上通过pecl安装PHP扩展-编程知识网

Mac上通过pecl安装PHP扩展-编程知识网

 

 

=============== 安装pdo_mysql扩展实例 ===================

sudo pecl install pdo_mysql
WARNING: "pecl/PDO_MYSQL" is deprecated in favor of "channel://http://svn.php.net/viewvc/php/php-src/trunk/ext/pdo_mysql//ext/pdo_mysql"
Package "pecl.php.net/PDO_MYSQL" dependency "pecl.php.net/pdo" has no releases
downloading PDO_MYSQL-1.0.2.tgz …
Starting to download PDO_MYSQL-1.0.2.tgz (14,778 bytes)
…..done: 11,946 bytes
ERROR: unable to unpack /private/tmp/pear/download/PDO_MYSQL-1.0.2.tgz
… 稍等,等下成功了再补发这一段…

=============== 安装mbstring扩展实例 ===================

pecl search mbstring
# 错误提示:WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
Retrieving data…0%
no packages found that match pattern "mbstring", for channel pecl.php.net.

sudo pecl channel-update pecl.php.net
Updating channel "pecl.php.net"
Update of Channel "pecl.php.net" succeeded

pecl search mbstring
Retrieving data…0%
no packages found that match pattern "mbstring", for channel pecl.php.net.

sudo pecl install mbstring
No releases available for package "pecl.php.net/mbstring"
install failed

sudo pecl install tidy
WARNING: channel "pear.php.net" has updated its protocols, use "pecl channel-update pear.php.net" to update
Cannot install, php_dir for channel "pear.php.net" is not writeable by the current user

sudo pecl channel-update pear.php.net

======= Pecl没有收录这个扩展,我们可以通过phpize来安装 =======
# 可以在https://www.php.net/downloads选择下载不同版本的PHP安装包,
# 建议稍微高点的版本,我当前安装的是php-7.3.8,选择了7.3.13,可以成功编译扩展包。
1. curl -O https://www.php.net/distributions/php-7.3.13.tar.bz2      (如果下载不了,请用浏览器下载)
2. tar -jxvf php-7.3.13.tar.bz2
3. cd php-7.3.13/ext/mbstring/
4. /usr/local/php5-7.3.8-20190811-205217/bin/phpize    (注意:路径=你系统当前phpize文件的绝对路径)
5. ./configure –with-php-config=/usr/local/php5-7.3.8-20190811-205217/bin/php-config  (注意:后面的路径=你系统当前php-config文件的绝对路径)
6. make
7. make test
8. sudo make install
# 编译完成,会提示新生成的so文件
# Installing shared extensions:     /usr/local/php5/lib/php/extensions/no-debug-non-zts-20180731/
# Installing header files:          /usr/local/php5/include/php/
9. ls /usr/local/php5/lib/php/extensions/no-debug-non-zts-20180731/  会看到mbstring.so文件,代表成功了
10. 修改php.ini,开始加载这个so扩展:extension=mbstring.so
11. sudo apachectl restart

题外话

— Pecl收录的扩展集 http://pecl.php.net/packages.php
— Pecl 算是 php 扩展的一个官方聚合平台,一些比较有名,有特点的扩展会被 pecl 收录,收录后可以通过 pecl 的方式安装。但是更多的扩展是没有收录在 pecl 上的,这些扩展还是需要通过 phpize 配置进行手动安装。
— php-config文件的路径,一般都是在php安装目录的bin文件夹下面,建议通过phpinfo()查看并参考exstension_dir,例如:
【如果是自己brew install php的话,有可能是】 /usr/local/Cellar/php@7.1/7.1.17/pecl/20160303/
【如果是通过】 /usr/local/php5-7.3.8-20190811-205217/bin/php-config
【如果是Mac自带的PHP】 不知道…我把自带的php卸掉了…
— 

 

Connection to `ssl://pecl.php.net:443' failed: Operation timed out – when sudo pecl search mbstring
https://blog.csdn.net/qq285744011/article/details/103718879