You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP ARGON2I password_hash函数在AWS EC2服务器无法运行求助

问题原因与解决方法

嘿,我之前也碰到过几乎一模一样的问题!咱们这情况的核心原因是PHP编译时未启用Argon2扩展支持——虽然两端都是PHP 7.2.5,但不同系统的PHP包默认配置差异很大:Windows下的XAMPP预编译包通常直接打包了Argon2的支持,而RedHat系(比如AWS EC2上的RHEL/Amazon Linux)的官方PHP包默认没开启这个扩展,甚至可能缺少底层依赖库libargon2。

第一步:先确认问题根源

先在EC2服务器上执行这两个命令,实锤一下是不是Argon2支持缺失:

  1. 检查PHP支持的密码哈希算法:
php -r "echo print_r(password_algos(), true);"

如果输出里找不到PASSWORD_ARGON2I,那就是PHP完全没支持Argon2。
2. 直接搜索Argon2相关配置:

php -i | grep argon2

如果没有任何输出,就说明扩展压根没装。

第二步:针对性解决(RedHat系服务器)

方案1:用Remi源安装带Argon2支持的PHP包(最省心)

RedHat/CentOS 7的官方源里的PHP 7.2默认不带Argon2,咱们可以用Remi仓库来搞定:

  • 先安装Remi仓库:
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
  • 启用PHP 7.2的Remi源:
sudo yum-config-manager --enable remi-php72
  • 重新安装PHP,确保带上argon2模块:
sudo yum install php php-common php-cli php-argon2
  • 重启Web服务(Apache或者PHP-FPM,看你用的哪个):
sudo systemctl restart httpd
# 如果用的是PHP-FPM就执行这个
sudo systemctl restart php-fpm

方案2:手动编译PHP(适合自定义环境)

如果不想换源,也可以自己编译PHP并启用Argon2:

  • 先安装底层依赖库:
sudo yum install libargon2-devel
  • 下载PHP 7.2.5的源码包,解压后编译,记得加上--with-password-argon2参数:
./configure --prefix=/usr/local/php --with-password-argon2 --enable-cli --enable-fpm  # 这里可以加你需要的其他编译参数
make && sudo make install
  • 替换系统默认的PHP版本,重启服务即可。

方案3:临时应急替代(不推荐长期用)

如果暂时没法调整环境,可以先用PASSWORD_BCRYPT临时替代,不过Argon2的安全性更高,还是建议尽快搞定环境问题:

$password = password_hash($_GET['password'], PASSWORD_BCRYPT, ['cost' => 12]);

最后验证

解决完之后,再跑一遍之前的password_algos()测试命令,确认PASSWORD_ARGON2I出现在输出里,然后再测试你的代码,应该就能正常运行了!

内容的提问来源于stack exchange,提问作者Abdullah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:12:49