解决执行 pecl upgrade-all 提示 Error getting channel info from pear.php.net: Connection to `ssl://pear.php.net:443' failed:Connection to 'ssl://pecl.php.net:443' failed: Unable to find the socket 错误。

出现这个错误主要是因为缺失默认证书导致的,具体原因不明。

下面说一下解决方案:

1、查看 default_cert_file 的路径

php -r "print_r(openssl_get_cert_locations());"

2、下载证书

wget -P /etc/ssl/ http://curl.haxx.se/ca/cacert.pem
chmod 744 /etc/ssl/cacert.pem

注意:其中 /etc/ssl/cacert.pem 替换为自己的真实路径

1、准备编译环境

yum install autoconf automake libtool make gcc libwebp libwebp-devel -y

2、下载并解压

wget https://imagemagick.org/download/ImageMagick.tar.gz
tar -xzf ImageMagick.tar.gz
#注意:如果是CnetOS 8则需要输入完整路径
cd ImageMagick*

3、配置并编译

由于7.0之后的版本默认开启webp支持,所以不再需要 --with-webp 参数

./configure --prefix=/usr
make
sudo make install
ldconfig

4、PHP 安装 imagick 模块

pecl install imagick

会提示:Please provide the prefix of ImageMagick installation [autodetect] :,输入ImageMagick的安装路径:

/usr

回车,等待完成安装。

5、配置 imagick 模块

在php.ini文件加入一行

extension=imagick.so

然后重启 php-fpm,使 imagick 模块生效