如何使用-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:
解决我的问题的步骤
- 下载最新的 PHP 源代码 f.e。 from here (I used this .GZ file,但请研究一下是否有更新的版本)
- 打开命令行
- 解压GZ文件并在命令行导航到解压后的源代码文件夹
- 您将需要 Homebrew,如果没有,请安装它
- 安装this guide中列出的依赖项(运行
brew install libjpeg
、brew install pcre
、brew install libxml2
等在命令行中)
- 同时安装Argon2库(这个在之前的攻略中没有提到,可以使用this guide)
- 现在运行命令行中的这个(仍然是同一个源代码文件夹):
./configure —with-password-argon2
- 运行
make test
在命令行中(耗时的过程,顺便喝杯啤酒)
- 运行
sudo make install
之后
- 我也重新启动了我的电脑,不确定是否有必要,但它起作用了
我尝试将 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:
- 下载最新的 PHP 源代码 f.e。 from here (I used this .GZ file,但请研究一下是否有更新的版本)
- 打开命令行
- 解压GZ文件并在命令行导航到解压后的源代码文件夹
- 您将需要 Homebrew,如果没有,请安装它
- 安装this guide中列出的依赖项(运行
brew install libjpeg
、brew install pcre
、brew install libxml2
等在命令行中) - 同时安装Argon2库(这个在之前的攻略中没有提到,可以使用this guide)
- 现在运行命令行中的这个(仍然是同一个源代码文件夹):
./configure —with-password-argon2
- 运行
make test
在命令行中(耗时的过程,顺便喝杯啤酒) - 运行
sudo make install
之后
- 我也重新启动了我的电脑,不确定是否有必要,但它起作用了