Как правильно установить Libsodium с PHP версии 5.5.
Я пытаюсь следовать инструкции на https://paragonie.com/book/pecl-libsodium/read/00-intro.md#installing-libsodium
Вот шаги, которые я сделал:
Идти к http://windows.php.net/downloads/pecl/releases/libsodium/1.0.6/
Скачайте «php_libsodium-1.0.6-5.5-nts-vc11-x64.zip» и распакуйте файлы.
Скопируйте «libsodium.dll» в мой каталог «C: \ Program Files (x86) \ PHP \ v5.5», где находится «php.exe»
Скопируйте «php_libsodium.dll» в мой каталог «C: \ Program Files (x86) \ PHP \ v5.5 \ ext»
Включить «extension = php_libsodium.dll» в файле php.ini
Перезагрузите сервер
Но когда я проверил это, написав простой тестовый файл 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 установлен правильно, но почему я получаю ошибку? Еще раз спасибо
sodium_*
функций не было в глобальном пространстве имен до тех пор, пока библиотека не была перенесена в собственный PHP, в версии 7.2. От руководство:
В PHP до 7.2 с libsodium из PECL, функции ниже были определены в пространстве имен Sodium. В PHP 7.2 пространства имен были отброшены в пользу префиксаodium_ (чтобы соответствовать внутренним стандартам разработки PHP).
Так что, если вы устанавливаете из PECL, вам нужно использовать предыдущие имена функций. В твоем случае:
$hash_str = \Sodium\crypto_pwhash_str(
...
Других решений пока нет …