我尝试将PHP的password_hash()
函数与PASSWORD_ARGON2I
算法一起使用,但是,出现以下错误消息:
警告:使用不确定的常量PASSWORD_ARGON2I-假定为“ PASSWORD_ARGON2I”(将来会引发错误 第 181
行中的 some-file.php 中抛出
行的 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
我一个字一个个地跟着the official documentation of the function,但是我仍然遇到这个错误。
然后,我进行了一些研究,得出了"PHP should be compiled using –with-password-argon2
"(where they refer to this file)。
我不知道如何执行此操作,也找不到任何可以指导我完成这些步骤或向我提供更多信息的页面。
哈希函数可以与PASSWORD_DEFAULT
完美配合,但这不是我目前所需要的。
感谢您的帮助。
PS:如果您想拒绝我的问题,请至少在评论中提供原因。
答案 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解决我的问题的步骤:
brew install libjpeg
,brew install pcre
,brew install libxml2
等)./configure —with-password-argon2
make test
(这很耗时,请随时喝啤酒)sudo make install
我还重新启动了计算机,不确定是否有必要,但是可以正常工作
祝您有美好的一天:)