YiluPHP
这家伙很懒,什么都没有留下...

经验 centos7中安装libsodium及其php扩展

浏览数 92537 最后修改时间
使用微信支付的apiv3扩展一定要使用sodium来解密,而sodium的 sodium_crypto_aead_aes256gcm_decrypt() 函数只能在>=php7.2.0中使用,这下把我折腾了好久,首先升级php到7.4.16,然后再一一安装需要的php扩展:

extension=imagick.so
https://www.yiluphp.com/article/detail/365

extension=redis.so
https://www.yiluphp.com/article/detail/430

extension=fileinfo.so
extension=pdo_mysql.so
https://www.yiluphp.com/article/detail/364

extension=sodium.so

一开始在7.1.12上安装了sodium,运行才发现不支持,而此时安装的是 libsodium 1.0.17。当我升级到php7.4.16安装sodium扩展时提醒我 至少需要libsodium 1.0.18才行。
[root@localhost sodium]# ./configure --with-php-config=/usr/local/php7.4.16/bin/php-config 
... ...
checking for sodium support... yes, shared
checking for libsodium >= 1.0.8... no
configure: error: Package requirements (libsodium >= 1.0.8) were not met:

No package 'libsodium' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables LIBSODIUM_CFLAGS
and LIBSODIUM_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

而我安装和升级libsodium 1.0.18一直没有成功,已经凌晨一点多了,我先做个笔记,免得下次找不到资料。

php7安装sodium扩展
https://www.php.cn/topic/php7/418425.html

php7安装sodium扩展的方法
https://www.yisu.com/zixun/123366.html

编译ZeroMQ以支持Libsodium出现的“ No package 'libsodium' found”问题
https://blog.csdn.net/yuesichiu/article/details/53288235

忽略libsodium可以正常安装。
https://blog.csdn.net/zhaohaibo_/article/details/84439148

Mac 与 Linux 安装 libsodium 库解决 libsodium not found 问题
https://bin.zmide.com/?p=408

官网下载页面(选择这个文件 libsodium-1.0.18-stable.tar.gz  才行)
https://download.libsodium.org/libsodium/releases/

CentOS 7.3 安装 libsodium 1.0.18
https://www.cnblogs.com/xbjss/p/11515733.html

微信支付v3支付结果通知处理(php)
https://blog.csdn.net/xiaosuom/article/details/114225695

安装和升级libsodium 的脚本(亲测可用,此方法至文末
https://gitee.com/lhzgl6587/aria2/blob/master/libsodium.sh
因为经常访问不了github,拷贝下来了,脚本内容如下:
#!/usr/bin/env bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

#=================================================
#	System Required: CentOS/Debian/Ubuntu
#	Description: Libsodium Install
#	Version: 1.0.0
#	Author: Toyo
#	Blog: https://doub.io/shell-jc6/
#=================================================

Libsodiumr_file="/usr/local/lib/libsodium.so"
Libsodiumr_ver_backup="1.0.15"

Green_font_prefix="\033[32m" && Red_font_prefix="\033[31m" && Green_background_prefix="\033[42;37m" && Red_background_prefix="\033[41;37m" && Font_color_suffix="\033[0m"
Info="${Green_font_prefix}[信息]${Font_color_suffix}" && Error="${Red_font_prefix}[错误]${Font_color_suffix}" && Tip="${Green_font_prefix}[注意]${Font_color_suffix}"

Check_Libsodium_ver(){
	echo -e "${Info} 开始获取 libsodium 最新版本..."
	Libsodiumr_ver=$(wget -qO- "https://github.com/jedisct1/libsodium/tags"|grep "/jedisct1/libsodium/releases/tag/"|head -1|sed -r 's/.*tag\/(.+)\">.*/\1/')
	[[ -z ${Libsodiumr_ver} ]] && Libsodiumr_ver=${Libsodiumr_ver_backup}
	echo -e "${Info} libsodium 最新版本为 ${Green_font_prefix}[${Libsodiumr_ver}]${Font_color_suffix} !"
}
Install_Libsodium(){
	if [[ -e ${Libsodiumr_file} ]]; then
		echo -e "${Error} libsodium 已安装 , 是否覆盖安装(或者更新)?[y/N]"
		read -e -p "(默认: n):" yn
		[[ -z ${yn} ]] && yn="n"
		if [[ ${yn} == [Nn] ]]; then
			echo "已取消..." && exit 1
		fi
	else
		echo -e "${Info} libsodium 未安装,开始安装..."
	fi
	Check_Libsodium_ver
	if [[ ${release} == "centos" ]]; then
		yum update
		echo -e "${Info} 安装依赖..."
		yum -y groupinstall "Development Tools"
		echo -e "${Info} 下载..."
		wget  --no-check-certificate -N "https://github.com/jedisct1/libsodium/releases/download/${Libsodiumr_ver}-RELEASE/libsodium-${Libsodiumr_ver}.tar.gz"
		echo -e "${Info} 解压..."
		tar -xzf libsodium-${Libsodiumr_ver}.tar.gz
		cd libsodium-${Libsodiumr_ver}
		echo -e "${Info} 编译安装..."
		./configure --disable-maintainer-mode
		make -j2
		make install
		echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.conf
	else
		apt-get update
		echo -e "${Info} 安装依赖..."
		apt-get install -y build-essential
		echo -e "${Info} 下载..."
		wget  --no-check-certificate -N "https://github.com/jedisct1/libsodium/releases/download/${Libsodiumr_ver}-RELEASE/libsodium-${Libsodiumr_ver}.tar.gz"
		echo -e "${Info} 解压..."
		tar -xzf libsodium-${Libsodiumr_ver}.tar.gz
		cd libsodium-${Libsodiumr_ver}
		echo -e "${Info} 编译安装..."
		./configure --disable-maintainer-mode
		make -j2
		make install
	fi
	ldconfig
	cd ..
	rm -rf libsodium-${Libsodiumr_ver}.tar.gz
	rm -rf libsodium-${Libsodiumr_ver}
	[[ ! -e ${Libsodiumr_file} ]] && echo -e "${Error} libsodium 安装失败 !" && exit 1
	echo && echo -e "${Info} libsodium 安装成功 !" && echo
}
action=$1
[[ -z $1 ]] && action=install
case "$action" in
	install)
	Install_Libsodium
	;;
    *)
    echo "输入错误 !"
    echo "用法: [ install ]"
    ;;
esac

安装方法使用这个的:
https://www.icode9.com/content-4-224432.html

安装libsodium后这样配置就行了:
echo $PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/usr/local/libsodium/lib/pkgconfig


我来说说