作者:hustjs | 来源:互联网 | 2022-12-10 13:40
我尝试将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:如果您想拒绝我的问题,请至少在评论中提供原因。
1> Biró Norbi..:
好吧,所以没有人给我一个有用的答案,尽管我要求每个下选民写下他们投票的理由(这样至少我以后可以改善我的问题),他们仍然是匿名的,只是对我投了反对票,这使我陷入了困境被阻止再询问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
。因此,以下是根据本指南解决了我的问题的步骤:
从这里下载最新的PHP源代码fe (我使用了.GZ文件,但是请研究是否有较新的版本)
打开命令行
提取GZ文件并在命令行中导航到提取的源代码文件夹
您将需要自制软件,如果没有,请安装它
安装列出的依赖关系在本指南(运行brew install libjpeg
,brew install pcre
,brew install libxml2
等。在命令行)
还要安装Argon2库(上一指南中未提及,您可以使用本指南)
现在在命令行中运行它(仍然是相同的源代码文件夹): ./configure —with-password-argon2
make test
在命令行中运行(耗时的过程,可随时喝啤酒)
运行sudo make install
后
我还重新启动了计算机,不确定是否有必要,但是可以正常工作
??祝你今天愉快 :)