在启用了Argon2的Amazon Linux 2上安装PHP

时间:2019-04-11 15:56:57

标签: php ami libsodium amazon-linux argon2-ffi

启用Argon2进行密码哈希处理时遇到问题。我从Amazon Linux 2的源代码构建PHP,但是一旦构建完成并编译了PHP,则PASSWORD_ARGON2I常量是未定义的,并且该算法不可用。

我尝试了多种不同的方法来使用不同的库来编译PHP,但是没有一种方法可以满足我所需的Argon2算法。下面,我将列出我已采取的一些步骤:

1)给出标志--with-sodium

使用此标志的编译已完成,但是运行包含功能password_hash()的测试脚本表明Argon2I不可用。

2)使用标志--with-password-argon2

进行编译

由于缺少库,因此无法编译,可以在以下错误中看到。

checking for Argon2 support... yes
checking for Argon2 library... not found
configure: error: Please ensure the argon2 header and library are installed

据此,我假设我缺少该标志起作用所需的库,因此我已经安装了Libsodium。重试具有相同的结果。

3)接下来,我将根据教程的建议安装更多依赖项。这些是: -氩气2 -libargon2-0 -libargon2-0-dev

这确实给我提供了cli工具argon2,该工具可以正常工作,但是再次编译PHP不会出现相同的错误。

目前我不确定下一步是什么,任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

尝试在运行PHP72的Cloud9 EC2实例上安装LexikJWTAuthenticationBundle时,收到了不支持的Argon2i。错误。 经过大量研究,我想出了一个解决方案。

这是要遵循的步骤。

安装libsodium:

$ sudo yum install libsodium-devel

安装后,如果运行此命令以查看PHP模块,则可能会看到列出了libsodium,但此目录不存在。

$ php -m 

该软件包实际上是作为钠.so而不是libsodium.so安装的(也许这是问题的根源?) 要使PHP加载模块,需要一些手动步骤。

转到PHP查找已安装模块的目录。

$ cd /etc/php.d

创建一个指向sodium.so软件包的文件。

$ sudo touch libsodium.ini

授予文件读/写权限。

$ sudo chmod 666 20-libsodium.ini

在编辑器中打开文件。我喜欢使用vim。

$ vi libsodium.ini

单击“ i”键进入插入模式,然后粘贴以下内容:

; Enable sodium extension module
extension=sodium.so

通过单击退出键并键入以下内容来保存文件:

:wq!

现在,如果通过键入php -m查看已安装的PHP模块,则会看到列出的libsodium。

这时,您应该能够运行抛出Argon2i错误的任何内容。

仅供参考,我既不是PHP开发人员,也不是AWS专家,但是我必须努力在EC2上部署公司PHP应用程序。因此,如果您对上述内容有任何疑问,我可能无法提供帮助。.但我会尝试;)

答案 1 :(得分:0)

我能够解决此问题。我创建了一个新的AWS Amazon Linux 2实例,并遵循以下步骤:

安装Argon2

sudo -s
git clone https://github.com/P-H-C/phc-winner-argon2.git
cd phc-winner-argon2
make
make test
make install PREFIX=/usr
cp /usr/lib/libargon2.so.1 /lib64/

导航回到父目录

cd ..

安装PHP 7.3.5

wget https://www.php.net/distributions/php-7.3.5.tar.gz
tar -zxvf php-7.3.5.tar.gz
cd php-7.3.5
./configure --with-password-argon2
make 
make test
make install
exit

导航回到父目录

cd ..

检查您的PHP版本

php --version

创建以下PHP脚本(pwd.php)。

<?php

  error_reporting(E_ALL);

  $hash = \password_hash('password', PASSWORD_ARGON2ID);
  echo "$hash\n";

?>

执行PHP脚本以测试Argon2功能

php pwd.php

您将收到类似以下内容的输出:

$argon2id$v=19$m=1024,t=2,p=2$dlB2SWdpUEFYZE9RSWNmQg$JGWNTXEomWX1hyM8OfzkRNx5C3zmBu3sqKU1hwohNOU

答案 2 :(得分:0)

sudo yum install -y libargon2 libargon2-devel

这对我有用。