我最近通过 Plesk 的 Web GUI 安装了 PHP 7.3.6,用于 Web 应用程序的开发副本,因为我打算将生产环境从 php 7.0 更新到 7.3。我决定借此机会将密码哈希从 PBKDF2 升级到 Argon2ID,因为 PHP 核心已经包含了它。我很惊讶地收到一条警告,指出 PASSWORD_ARGON2ID 常量未定义,因为我知道它是在 php 7.3.0 中添加的。
我尝试搜索此错误的任何实例,我发现唯一相关的是 Laravel 论坛中这篇未详细说明的帖子:
https://laracasts.com/discuss/channels/laravel/use-of-undefined-constant-password-argon2id-assumed-password-argon2id?page=1 https://laracasts.com/discuss/channels/laravel/use-of-undefined-constant-password-argon2id-assumed-password-argon2id?page=1
该应用程序托管在与 MediaTemple 共享的 vps 上。 Centos 7,使用 nginx 作为 Apache 的反向代理。它是一个用于开发的子域,与运行应用程序生产版本 7.0.33 的主域一起运行 7.3.6。
$this->password = password_hash('password123', PASSWORD_ARGON2ID, array('time_cost' => 10, 'memory_cost' => '2048k', 'threads' => 6));
我期望定义 PASSWORD_ARGON2ID 常量,但它被报告为未定义:
Use of undefined constant PASSWORD_ARGON2ID - assumed 'PASSWORD_ARGON2ID' (this will throw an Error in a future version of PHP)
仅当 PHP 已编译为支持 Argon2 时,此算法才可用。 - 密码哈希值 https://www.php.net/manual/en/function.password-hash.php
如果您想在可用时使用它,我建议您检查一下defined
否则回退到默认算法。
if(defined('PASSWORD_ARGON2ID')) {
$hash = password_hash('password123', PASSWORD_ARGON2ID, array('time_cost' => 10, 'memory_cost' => '2048k', 'threads' => 6));
} else {
$hash = password_hash('password123', PASSWORD_DEFAULT, array('time_cost' => 10, 'memory_cost' => '2048k', 'threads' => 6));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)