PHP Sodium не установлен?
Я пытаюсь использовать Libsodium впервые для шифрования, но я столкнулся с ошибкой! Я запускаю все на XAMPP, а натрий находится в папке /ext/, и я добавил extension=sodium
на php.ini
Это мой код:
<?php
// This refers to the previous code block.
require "safeCrypto.php";
// Do this once then store it somehow:
$key = random_bytes(SODIUM_CRYPTO_SECRETBOX_KEYBYTES);
$message = 'We are all living in a yellow submarine';
$ciphertext = safeEncrypt($message, $key);
$plaintext = safeDecrypt($ciphertext, $key);
echo $ciphertext;
echo $plaintext;
echo phpversion();
Выдает эту ошибку:
<br />
<b>Warning</b>: Use of undefined constant SODIUM_CRYPTO_SECRETBOX_KEYBYTES - assumed 'SODIUM_CRYPTO_SECRETBOX_KEYBYTES' (this will throw an Error in a future version of PHP) in <b>D:\xampp\htdocs\php\crypttest.php</b> on line <b>6</b><br />
<br />
<b>Fatal error</b>: Uncaught TypeError: random_bytes() expects parameter 1 to be integer, string given in D:\xampp\htdocs\php\crypttest.php:6
Я использую PHP 7.2.10
ОБНОВИТЬ
Запустил get_loaded_extensions и натрий НЕ установлен, и я не могу понять, почему. php_sodium.dll
существует в папке Ext, и я добавил extension=sodium
в php.ini, среди других расширений, которые загружаются правильно.
0 ответов
На прошлых выходных у меня была такая же проблема. У меня есть свежая установка Windows 10 для использования в качестве новой машины для разработки, я также установил JDK с Apache Netbeans 11.1 и новую установку XAMMP (xampp-windows-x64-7.3.11-0-VC15-installer). После установки я изменил файл php.ini, чтобы раскомментировать "extension= натрий", и начал проверять, активен ли натрий в php с помощью команды "php -m" в оболочке xampp. Там я увидел, что модуль натрия загружен.
В моем test.php я поставил строку:
<?php
echo random_bytes(SODIUM_CRYPTO_SECRETBOX_KEYBYTES);
?>
Чтобы проверить, сработало ли это. К сожалению, я получил ошибку:
Warning: Use of undefined constant SODIUM_CRYPTO_SECRETBOX_KEYBYTES - assumed 'SODIUM_CRYPTO_SECRETBOX_KEYBYTES' (this will throw an Error in a future version of PHP)
Я провел расширенное исследование на этом и других форумах, чтобы найти ответ, но не нашел его, пока не попробовал метод Джима ( /questions/21815533/natrij-ne-zagruzhaetsya-na-xampp-php-72/21815546#21815546). Он действительно вернулся к более ранней версии php, но ответ на его шаге 4. Скопируйте libsodium.dll в папку "apache/bin". И libsodium работал! Я полностью деинсталлировал Xampp и попробовал снова. С таким же результатом. Все, что вам нужно сделать, это скопировать libsodium.dll из папки "xampp/php" в папку "xampp/apache/bin" и, конечно же, раскомментировать расширение в php.ini, и все готово.