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

Bir*_*rbi 1 php password-hash

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

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




我逐字阅读了该功能的官方文档,但仍然遇到此错误。

然后,我进行了一些研究,发现“ PHP应该使用–with-password-argon2” 进行编译它们引用此文件)。

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

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

感谢您的帮助。

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

Bir*_*rbi 6

好吧,所以没有人给我一个有用的答案,尽管我要求每个下选民写下他们投票的理由(这样至少我以后可以改善我的问题),他们仍然是匿名的,只是对我投了反对票,这使我陷入了困境被阻止再询问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。因此,以下是根据本指南解决了我的问题的步骤:

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

    ??祝你今天愉快 :)