Php

如何從 centos 軟體集合中為 php 啟用 argon2?

  • April 8, 2020

我將 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-sodiumandlibsodium 因為我發現了這個: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;

所以這是目前唯一的解決方案。

引用自:https://serverfault.com/questions/1011310