Php
如何從 centos 軟體集合中為 php 啟用 argon2?
我將 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
andlibsodium
因為我發現了這個:https ://stackoverflow.com/a/59392421/4102092但它沒有幫助。最後的問題是: 如何使用軟體集合儲存庫中的 PHP 包並獲得 argon2 支持?
最後的問題是:如何使用軟體集合儲存庫中的 PHP 包並獲得 argon2 支持?
你不能。
鈉擴展僅在 PHP >= 7.4 中提供 argon2 密碼雜湊算法,在以前的版本中不提供。
在 7.2 / 7.3 中,argon2 是“標準”擴展的一部分,並且在 RH 建構中被禁用,因為 libargon2 在 RHEL / CentOS 中不可用
在舊伺服器上,我使用的是 remi 儲存庫中的 PHP 7.2;
所以這是目前唯一的解決方案。