Предупреждение PHP: Использование неопределенной константы PASSWORD_ARGON2ID при использовании password_hash () в php 7.3 - PullRequest
3 голосов
/ 07 июня 2019

Я недавно установил PHP 7.3.6 через веб-интерфейс Plesk для разработки копии веб-приложения, так как намерен обновить нашу производственную среду с 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

Приложение размещено на совместно используемом vps с MediaTemple. 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)

1 Ответ

3 голосов
/ 07 июня 2019

Этот алгоритм доступен, только если 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));
}
...