Как установить PHP Sodium на Ubuntu 22.04

Как установить PHP Sodium на Ubuntu 22.04

Я использую сервер Google Cloud на Ubuntu 22.04. Это типичный стек LAMP (PHP версии 8.1.2). Некоторые сайты на сервере используют Laravel 8.

Недавно я обновил один из сайтов до Laravel 9 и получил следующую ошибку:

Class 'Facade\Ignition\IgnitionServiceProvider' not found

После небольшого исследования выяснилось, что это, по-видимому, вызвано отсутствием расширения PHP Sodium.

Если я запущу php -i | grep sodiumчерез терминал, то получу:

PHP Warning:  PHP Startup: Unable to load dynamic library 'sodium' (tried: /usr/lib/php/20210902/sodium (/usr/lib/php/20210902/sodium: cannot open shared object file: No such file or directory), /usr/lib/php/20210902/sodium.so (/usr/lib/php/20210902/sodium.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
sodium
sodium support => enabled
libsodium headers version => 1.0.18
libsodium library version => 1.0.18
PWD => /home/thomasadam83/libsodium-stable
$_SERVER['PWD'] => /home/thomasadam83/libsodium-stable

Я попробовал установить Sodium с помощью:

sudo apt install php-sodium

И получил следующий ответ:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package php-sodium

Если я запускаю любую команду PHP из терминала, ответ начинается с:

PHP Warning:  PHP Startup: Unable to load dynamic library 'sodium' (tried: /usr/lib/php/20210902/sodium (/usr/lib/php/20210902/sodium: cannot open shared object file: No such file or directory), /usr/lib/php/20210902/sodium.so (/usr/lib/php/20210902/sodium.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

Я не могу найти других сообщений с похожей проблемой и рабочим решением.

Любая помощь будет оценена по достоинству!

решение1

В Ubuntu 22.04 пакет php8 имеет поддержку sodium, напрямую скомпилированную в основной пакет, загружаемой библиотеки нет.

Я предполагаю, что вы раскомментировали ;extension=sodiumв php.ini. Это не было необходимостью, sodium уже был там. Вы можете попробовать это, снова закомментировав строку, а затем запустить простой PHP-скрипт с использованием функции sodium, например:

<?php
$result = sodium_compare(452654236423,647382647836);
var_dump($result);

Вы должны увидеть результат без ошибок.

$ php test.php
int(-1)

Если это так, то ваша проблема не в недостатке натрия, а в чем-то другом.

Связанный контент