【问题标题】:Installing PHP on Amazon Linux 2 with Argon2 Enabled在启用 Argon2 的 Amazon Linux 2 上安装 PHP
【发布时间】:2019-09-02 08:04:00
【问题描述】:

我在启用 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 并不会出现相同的错误。

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

【问题讨论】:

  • 嗨罗伯特。你介意看看解决方案并奖励赏金吗?谢谢
  • 重新配置包并尝试再次安装我认为如果正确安装了argon2它会起作用

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


【解决方案1】:

sudo yum install -y libargon2 libargon2-devel

这对我有用。

【讨论】:

    【解决方案2】:

    我能够解决这个问题。我创建了一个新的 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
    

    【讨论】:

    • 您好,很抱歉给您这么长的回复,但我们不得不转移到其他项目,这让位。感谢您发布说明,他们帮助我进一步使用配置命令,但它仍然引发错误。 checking for argon2id_hash_raw in -largon2... no configure: error: Problem with libargon2.(a|so). Please verify that Argon2 header and libaries &gt;= 20161029 are installed 我明天会花时间看看这个(一些粗略的搜索并没有发现太多),但任何关于这方面的指导都将不胜感激。
    【解决方案3】:

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

    以下是要遵循的步骤。

    安装 libsodium:

    $ sudo yum install libsodium-devel
    

    安装后,如果你运行这个命令来查看你的 PHP 模块,你会看到 libsodium 被列出来,但它并不存在。

    $ php -m 
    

    该软件包实际上是作为 sodium.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 应用程序。因此,如果您对上述内容有任何疑问,我可能无法提供帮助..但我会尝试 ;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 2023-01-09
      • 2020-12-17
      • 2023-01-30
      • 2022-07-09
      • 1970-01-01
      • 2021-09-09
      相关资源
      最近更新 更多