Laravel项目安装ext-sodium失败致JWT相关包无法使用求助
解决Laravel项目依赖及libsodium扩展安装问题
问题概述
Laravel项目中调用createtoken("");失效,删除vendor目录执行composer install后出现依赖错误:
Problem 1 - lcobucci/jwt is locked to version 4.3.0 and an update of this package was not requested. - lcobucci/jwt 4.3.0 requires ext-sodium * -> it is missing from your system. Install or enable PHP's sodium extension. Problem 2 - lcobucci/jwt 4.3.0 requires ext-sodium * -> it is missing from your system. Install or enable PHP's sodium extension. - kreait/firebase-tokens 4.3.0 requires lcobucci/jwt ^4.3.0|^5.0 -> satisfiable by lcobucci/jwt[4.3.0]. - kreait/firebase-tokens is locked to version 4.3.0 and an update of this package was not requested.
尝试安装libsodium扩展时:
- PHP 8.2.4版本因超出扩展支持范围(要求≥7.0.0且≤8.0.99)安装失败;
- 切换到PHP 8.0.28的XAMPP后,执行
sudo pecl install -f libsodium报错:
configure: error: wrong libsodium lib version (< 1.0.8) or lib not found ERROR: `/private/var/tmp/pear/temp/libsodium/configure --with-php-config=/Applications/XAMPP/xamppfiles/bin/php-config' failed
解决方案
方案一:升级依赖包,避开ext-sodium强制要求
- 打开项目根目录的
composer.json,修改require区块的依赖版本:"require": { // ...保留其他依赖 "lcobucci/jwt": "^4.2", "kreait/firebase-tokens": "^4.2" } - 执行命令更新指定依赖:
composer update lcobucci/jwt kreait/firebase-tokens --with-all-dependencies - 重新执行
composer install,此时依赖不再强制要求ext-sodium扩展。
方案二:正确安装libsodium扩展(适配PHP 8.0)
若坚持使用原依赖版本,需先安装系统级libsodium库再装PHP扩展:
- 安装系统级libsodium(以macOS为例,用Homebrew):
记住安装路径(通常为brew install libsodium/usr/local/opt/libsodium)。 - 指定路径安装PHP扩展:
sudo pecl install libsodium --with-libsodium=/usr/local/opt/libsodium - 打开XAMPP的
php.ini文件,添加以下内容启用扩展:extension=sodium.so - 重启XAMPP Apache服务,执行
php -m确认sodium扩展已加载,再重新运行composer install。
方案三:临时忽略平台扩展要求
仅作为应急方案,不推荐生产环境使用:
composer install --ignore-platform-reqs
内容的提问来源于stack exchange,提问作者Janam Maharjan
相关产品推荐
相关产品推荐

