Я переместил установку nextcloud с одного сервера на другой. На новом сервере хочу использовать другую версию PHP. Проблема в том, что пароли хешируются алгоритмом argon2 (в таблицах oc_users
и oc_share
в nextcloud
база данных).
Проблема в том, что новая версия, похоже, не поддерживает argon2, и я получаю сообщения «неправильный пароль», когда пытаюсь войти в систему с пользователем + пароль на новом сервере, который, как я знаю, работает на старом сервере.
На старом сервере я использовал PHP 7.2 из репозитория remi; на новом сервере я хотел бы использовать PHP 7.2 или 7.3 (пофиг) из репозитория centos-sclo-rh.
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?
Наконец, вопрос: как я могу использовать пакеты PHP из репозитория коллекции программного обеспечения и иметь поддержку argon2?
Вы не можете.
Расширение натрия предоставляет алгоритм хеширования пароля argon2 только в PHP> = 7.4, но не в предыдущих версиях.
В 7.2 / 7.3 argon2 является частью «стандартного» расширения и отключен в сборке RH, поскольку libargon2 недоступен в RHEL / CentOS.
На старом сервере я использовал PHP 7.2 из репозитория remi;
Так что это пока единственное решение.