我将 nextcloud 安装从一台服务器移到了另一台服务器。在新服务器上,我想使用另一个版本的 PHP。问题是密码使用 argon2 算法进行哈希处理(在表格oc_users
和数据库oc_share
中nextcloud
)。
问题是新版本似乎不支持 argon2,当我尝试使用我知道可以在旧服务器上运行的新服务器上的用户+密码登录时,我收到“密码错误”消息。
在旧服务器上,我使用来自 remi 存储库的 PHP 7.2;在新服务器上,我想使用来自 centos-sclo-rh 存储库的 PHP 7.2 或 7.3(无关紧要)。
user@home $ ssh old
user@old $ php --version
PHP 7.2.29 (cli) (built: Mar 17 2020 11:36:18) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.29, Copyright (c) 1999-2018, by Zend Technologies
user@old $ php -r 'var_dump(PASSWORD_ARGON2I);'
int(2)
user@old $ exit
user@home $ ssh new
user@new $ scl enable rh-php72 -- php --version
PHP 7.2.24 (cli) (built: Nov 4 2019 10:23:08) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.24, Copyright (c) 1999-2018, by Zend Technologies
user@new $ scl enable rh-php73 -- php --version
PHP 7.3.11 (cli) (built: Dec 10 2019 16:14:50) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.11, Copyright (c) 1998-2018 Zend Technologies
user@new $ scl enable rh-php72 -- php -r 'var_dump(PASSWORD_ARGON2ID);'
Warning: Use of undefined constant PASSWORD_ARGON2ID - assumed 'PASSWORD_ARGON2ID' (this will throw an Error in a future version of PHP) in Command line code on line 1
string(17) "PASSWORD_ARGON2ID"
user@new $ scl enable rh-php73 -- php -r 'var_dump(PASSWORD_ARGON2ID);'
PHP Warning: Use of undefined constant PASSWORD_ARGON2ID - assumed 'PASSWORD_ARGON2ID' (this will throw an Error in a future version of PHP) in Command line code on line 1
string(17) "PASSWORD_ARGON2ID"
我也尝试安装,sclo-php7{2,3}-php-sodium
因为libsodium
我发现了这个:https://stackoverflow.com/a/59392421/4102092但没有帮助。
最后的问题: 如何使用软件集合存储库中的 PHP 包并获得 argon2 支持?
答案1
最后的问题是:如何使用软件集合存储库中的 PHP 包并获得 argon2 支持?
你不能。
Nadium 扩展仅在 PHP >= 7.4 中提供 argon2 密码哈希算法,在之前的版本中不提供。
在 7.2 / 7.3 中,argon2 是“标准”扩展的一部分,在 RH 构建中被禁用,因为 RHEL / CentOS 中没有 libargon2
在旧服务器上,我使用来自 remi 存储库的 PHP 7.2;
所以这是目前唯一的解决方案。