PHP 警告:在 php 7.3 中使用 password_hash() 时使用未定义常量 PASSWORD_ARGON2ID
PHP Warning: Use of undefined constant PASSWORD_ARGON2ID when using password_hash() in php 7.3
我最近通过 Plesk 的 Web GUI 安装了 PHP 7.3.6 作为 Web 应用程序的开发副本,因为我打算将我们的生产环境从 php 7.0 更新到 7.3。我决定借此机会将我们的密码散列从 PBKDF2 升级到 Argon2ID,因为 PHP 核心已经包含了它。我很惊讶地收到一条警告,指出 PASSWORD_ARGON2ID 常量未定义,因为我知道它是在 php 7.3.0.
中添加的
我尝试搜索此错误的任何实例,我发现唯一相关的是 Laravel 论坛中未详细说明的 post:
该应用程序托管在与 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)
此算法仅在 PHP 编译时支持 Argon2 时可用。 - password_hash
如果您想在它可用时使用它,我建议您检查 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));
}
我通过安装模块 sodium 设法摆脱了警告。
debian / ubuntu: sudo apt-get install php-sodium
centos/rhel: sudo yum install php-sodium
我最近通过 Plesk 的 Web GUI 安装了 PHP 7.3.6 作为 Web 应用程序的开发副本,因为我打算将我们的生产环境从 php 7.0 更新到 7.3。我决定借此机会将我们的密码散列从 PBKDF2 升级到 Argon2ID,因为 PHP 核心已经包含了它。我很惊讶地收到一条警告,指出 PASSWORD_ARGON2ID 常量未定义,因为我知道它是在 php 7.3.0.
中添加的我尝试搜索此错误的任何实例,我发现唯一相关的是 Laravel 论坛中未详细说明的 post:
该应用程序托管在与 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)
此算法仅在 PHP 编译时支持 Argon2 时可用。 - password_hash
如果您想在它可用时使用它,我建议您检查 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));
}
我通过安装模块 sodium 设法摆脱了警告。
debian / ubuntu: sudo apt-get install php-sodium
centos/rhel: sudo yum install php-sodium