我最近通过 Plesk 的 Web GUI 安装了 PHP 7.3.6,用于 Web 应用程序的开发副本,因为我打算将我们的生产环境从 php 7.0 更新到 7.3。我决定借此机会将我们的密码散列从 PBKDF2 升级到 Argon2ID,因为 PHP 核心已经包含了它。我很惊讶地收到一条警告,指出 PASSWORD_ARGON2ID 常量未定义,因为我知道它是在 php 7.3.0 中添加的。
我尝试搜索此错误的任何实例,我发现唯一相关的是 Laravel 论坛中的这篇不详细的帖子:
该应用程序托管在与 MediaTemple 共享的 vps 上。Centos 7,使用 nginx 作为 Apache 的反向代理。它是运行 7.3.6 的开发子域,与运行应用程序生产版本 7.0.33 的主域一起运行。
$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)