如何使用–with-password-argon2编译PHP?

时间:2018-07-17 14:24:28

标签: php password-hash

我尝试将PHP的password_hash()函数与PASSWORD_ARGON2I算法一起使用,但是,出现以下错误消息:

  

警告:使用不确定的常量PASSWORD_ARGON2I-假定为“ PASSWORD_ARGON2I”(将来会引发错误   第 181
行的 some-file.php 中的PHP版本)       
      警告:password_hash()期望参数2为整数,在 192
行的 some-file.php 中给出的字符串       
      致命错误:未捕获的PDOException:SQLSTATE [23000]:违反完整性约束:1048列“密码”不能为空   在some-file.php:232中       堆栈跟踪:       #0 some-file.php(232):PDOStatement-> execute()       #1 {main}         在 232

行中的 some-file.php 中抛出

我一个字一个个地跟着the official documentation of the function,但是我仍然遇到这个错误。

然后,我进行了一些研究,得出了"PHP should be compiled using –with-password-argon2"where they refer to this file)。

我不知道如何执行此操作,也找不到任何可以指导我完成这些步骤或向我提供更多信息的页面。

哈希函数可以与PASSWORD_DEFAULT完美配合,但这不是我目前所需要的。

感谢您的帮助。

PS:如果您想拒绝我的问题,请至少在评论中提供原因。

1 个答案:

答案 0 :(得分:3)

好吧,所以没有人给我一个有用的答案,尽管我要求每位下选民写下他们投票的理由(这样至少以后我可以改善我的问题),但他们仍然是匿名的,只是对我投了反对票,让我感到沮丧处于不再要求Stackoverflow的状态。由于我是一名Web开发人员,对我来说,一切都是新事物,要看完所有这些过程是一件非常复杂的事情,尤其是如果我以前从未做过,但是感谢您不友好的脾气暴躁的程序员,现在我可能走出这个“有用的社区”。简而言之:感谢您让Stackoverflow成为一个更好的地方,并像在自己母亲的生日晚宴上一样欢迎新朋友!随你。让我们继续回答吧,希望我能帮助遇到同样问题的人:


答案:

我不知道,但是OSX附带了预安装的PHP。我有一个很早的版本,所以我需要升级它以使Argon2算法正常工作。当我在命令行中通过php --version检查版本时,得到以下结果:

  

PHP 5.6.30(cli)(内置:2017年10月29日20:30:32)
  版权所有(c)1997-2016 The PHP Group
  Zend Engine v2.6.0,版权所有(c)1998-2016 Zend Technologies

因此,我按照本指南进行操作,但还必须安装Argon2库(未提及)并使用./configure —with-password-argon2。因此,以下是根据this guide解决我的问题的步骤:

  1. 下载最新的PHP源代码f.e. from here(我使用过this .GZ file,但请研究一下是否有较新的版本)
  2. 打开命令行
  3. 提取GZ文件并在命令行中导航到提取的源代码文件夹
  4. 您将需要Homebrew,如果没有,请安装它
  5. 安装this guide中列出的依赖项(在命令行中运行brew install libjpegbrew install pcrebrew install libxml2等)
  6. 还安装Argon2库(上一指南中未提及,您可以使用this guide
  7. 现在在命令行(仍是相同的源代码文件夹)中运行此命令:./configure —with-password-argon2
  8. 在命令行中运行make test(这很耗时,请随时喝啤酒)
  9. 之后运行sudo make install
  10. 我还重新启动了计算机,不确定是否有必要,但是可以正常工作

    祝您有美好的一天:)