криптография — PHP: Установка Libsodium to PHP v5.5

Как правильно установить Libsodium с PHP версии 5.5.
Я пытаюсь следовать инструкции на https://paragonie.com/book/pecl-libsodium/read/00-intro.md#installing-libsodium

Вот шаги, которые я сделал:

  1. Идти к http://windows.php.net/downloads/pecl/releases/libsodium/1.0.6/

  2. Скачайте «php_libsodium-1.0.6-5.5-nts-vc11-x64.zip» и распакуйте файлы.

  3. Скопируйте «libsodium.dll» в мой каталог «C: \ Program Files (x86) \ PHP \ v5.5», где находится «php.exe»

  4. Скопируйте «php_libsodium.dll» в мой каталог «C: \ Program Files (x86) \ PHP \ v5.5 \ ext»

  5. Включить «extension = php_libsodium.dll» в файле php.ini

  6. Перезагрузите сервер

Но когда я проверил это, написав простой тестовый файл PHP:

<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

// hash the password and return an ASCII string suitable for storage
$hash_str = sodium_crypto_pwhash_str(
"mypassword",
SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
);

echo "hash: " . $hash_str;
?>

Страница результатов показывает ошибку:

Неустранимая ошибка: вызов неопределенной функцииodium_crypto_pwhash_str () в
C: \ PHP \ testLibsodium.php в строке 7

Библиотека Libsodium, кажется, не установлена, потому что она не знает функцию.
Что нужно сделать, чтобы установить PHP Libsodium в PHP версии 5.5?
Большое спасибо.

Обновление: я установил версию X86 в соответствии с рекомендациями @iann и запустил этот код:

$storeInDatabase = \Sodium\crypto_pwhash_str(
"safasfdwr32sfdfas234",
SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
);

Теперь кажется, что функция читается, но я получаю сообщение об ошибке:

Примечание: использование неопределенной константы
SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE — предполагается
‘SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE’

Примечание: использование неопределенной константы
SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE — предполагается
‘SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE’

Предупреждение: Sodium \ crypto_pwhash_str () ожидает, что параметр 2 будет длинным

Исправляемая фатальная ошибка: crypto_pwhash_str (): неверные параметры

Означает ли это, что мой libsodium установлен правильно, но почему я получаю ошибку? Еще раз спасибо

0

Решение

sodium_* функций не было в глобальном пространстве имен до тех пор, пока библиотека не была перенесена в собственный PHP, в версии 7.2. От руководство:

В PHP до 7.2 с libsodium из PECL, функции ниже были определены в пространстве имен Sodium. В PHP 7.2 пространства имен были отброшены в пользу префиксаodium_ (чтобы соответствовать внутренним стандартам разработки PHP).

Так что, если вы устанавливаете из PECL, вам нужно использовать предыдущие имена функций. В твоем случае:

$hash_str = \Sodium\crypto_pwhash_str(
...
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]