Хобрук: Ваш путь к мастерству в программировании

libsodium Ошибка вызова неопределенной функции

Я установил libsodium и libsodium-php на Ubuntu 16.04, но когда я запускаю:

`<?php
var_dump([
    \Sodium\library_version_major(),
    \Sodium\library_version_minor(),
    \Sodium\version_string()
]);`

Я получаю сообщение об ошибке:

PHP Fatal error:  Uncaught Error: Call to undefined function Sodium\library_version_major() 

Согласно phpinfo(), натрий включен, скомпилированная версия — 2.0.1, а версия библиотеки — 1.0.13. Что я делаю не так?


Ответы:


1

PHP API для libsodium изменился в версии 2.0.0 расширения.

Изначально все функции находились в пространстве имен \Sodium\.

Однако после голосования разработчиков PHP по поводу его включения в PHP 7.2 было решено вместо этого переместить все в глобальное пространство имен.

Итак, то, что раньше было \Sodium\library_version_major(), теперь sodium_library_version_major().

15.07.2017
  • Замена \Sodium\library_version_major() на sodium_library_version_major() приводит к той же ошибке. 16.07.2017
  • Плохой пример, так как он был заменен константой SODIUM_LIBRARY_MAJOR_VERSION. Но настоящие функции теперь имеют префикс натрия_. 16.07.2017
  • У меня тоже проблемы с ним, спасибо за ответ. Есть ли официальная документация по этим новым функциям? Очевидно, они меняют больше имен функций, так как я не могу получить доступ к sodium_crypto_pwhash_scryptsalsa208sha256_str(). На сайте libsodium я вижу только устаревшие примеры. 26.08.2017
  • crypto_pwhash_scryptsalsa208sha256_str() больше не существует. Его больше нет и в минимальных сборках libsodium, так как уже давно существует высокоуровневый crypto_pwhash() API. Итак, используйте sodium_crypto_pwhash(), sodium_crypto_pwhash_str() и sodium_crypto_pwhash_str_verify(). 26.08.2017
  • Я сделал то же самое, и он включен в phpinfo(). Но sodium_library_version_major() по-прежнему получает ту же ошибку. 14.09.2017
  • Прохладный. любая идея, почему это работает, но немного своеобразно, здесь: stackoverflow.com/q/46215938/2037746 14.09.2017
  • Этот ответ также может помочь отладить, какой конкретный синтаксис вы должны использовать, в зависимости от установленной версии php/sodium: stackoverflow.com/questions/53956155/ 22.02.2021

  • 2

    Для тех, кто установил Pecl версию Soidum и включил ее в php.ini (extension=sodium.so) и имеет ту же ошибку, что и Call to Undefined...

    После перезапуска Apache и nginx и отсутствия успеха, наконец, перезагрузите сервер, чтобы натрий работал исключительно.

    PHP 7.3 и >7.3 = libsodium 2.1

    Надеюсь быть полезным.

    10.01.2020

    3

    Для тех, кто не смог получить ответ, потому что он должен быть:

    <?php
    var_dump([
        SODIUM_LIBRARY_MAJOR_VERSION,
        SODIUM_LIBRARY_MINOR_VERSION,
        SODIUM_LIBRARY_VERSION
    ]);
    
    22.03.2021
    Новые материалы

    Что такое структура данных?
    Структура данных хранит и извлекает данные. Все, что обеспечивает эти две функции, является структурой данных . Период. Вы можете пропустить оставшуюся часть статьи, если ответ..

    мои январские чтения по программированию
    Эрик Эллиот Программирование приложения JavaScript Эл Свейгарт «Автоматизируйте скучные вещи с помощью Python» Прогрессивное веб-приложение Google..

    Создание ассоциаций секвелизации с помощью инструмента командной строки Sequelize
    Sequelize - популярный, простой в использовании инструмент объектно-реляционного сопоставления (ORM) JavaScript, который работает с базами данных SQL. Довольно просто начать новый проект с..

    Искусственный интеллект в юридической отрасли - пример прогнозирования судебных решений с помощью глубокого обучения
    На протяжении всей истории люди полагались на суды, присяжных, королей и королев в отправлении правосудия. Сегодня способность судов обеспечивать справедливое и быстрое правосудие для своих..

    Введение в машинное обучение для обнаружения аномалий (часть 1)
    Тщательно созданный, тщательно спроектированный ресурс для специалистов по данным. Часть 1 Главы 03 из Руководства по машинному обучению для обнаружения аномалий Внимание! Прежде чем вы..

    Начало работы с Pulumi в Digital Ocean
    Цифровой океан (ДО) — отличная альтернатива многим другим поставщикам облачных услуг. DO предоставляет простой и понятный пользовательский интерфейс, упрощающий управление инфраструктурой и..

    #Day68 из #100days_of_coding
    Вчера был мой 68-й день кодинга. я решил один вопрос Проблема: Разбить двоичную строку на подстроки с равным количеством нулей и единиц Дана двоичная строка str длины N . Задача состоит..