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

How to compile PHP using –with-password-argon2?

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

Warning: Use of undefined constant PASSWORD_ARGON2I - assumed 'PASSWORD_ARGON2I' (this will throw an Error in a future version of PHP) in some-file.php on line 181

Warning: password_hash() expects parameter 2 to be integer, string given in some-file.php on line 192

Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'password' cannot be null in some-file.php:232 Stack trace: #0 some-file.php(232): PDOStatement->execute() #1 {main} thrown in some-file.php on line 232

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

然后我做了一些研究,我发现 "PHP should be compiled using –with-password-argon2" (where they refer to this file).

我不知道该怎么做,也找不到任何页面可以指导我完成这些步骤或提供更多信息。

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

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

PHP 5.6.30 (cli) (built: Oct 29 2017 20:30:32)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

所以我遵循了本指南,但我还必须安装 Argon2 库(未提及)并使用 ./configure —with-password-argon2。所以这是基于 this guide:

解决我的问题的步骤
  1. 下载最新的 PHP 源代码 f.e。 from here (I used 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. 之后
  11. 我也重新启动了我的电脑,不确定是否有必要,但它起作用了