Como instalar PHP Sódio no Ubuntu 22.04

Como instalar PHP Sódio no Ubuntu 22.04

Estou executando um servidor Google Cloud com Ubuntu 22.04. É uma pilha LAMP típica (o PHP é a versão 8.1.2). Alguns dos sites no servidor usam Laravel 8.

Recentemente atualizei um dos sites para o Laravel 9 e recebi o seguinte erro:

Class 'Facade\Ignition\IgnitionServiceProvider' not found

Com um pouco de pesquisa, aparentemente isso é causado pela falta de uma extensão PHP Sodium.

Se eu executar php -i | grep sodiumusando um terminal, recebo:

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

Tentei instalar o Sodium usando:

sudo apt install php-sodium

E recebeu a seguinte resposta:

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

Se eu executar qualquer comando PHP do terminal, a resposta começará com:

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

Não consigo encontrar nenhuma outra postagem com um problema semelhante e uma solução funcional.

Qualquer ajuda seria apreciada!

Responder1

No Ubuntu 22.04 o pacote php8 tem suporte ao sódio compilado diretamente no pacote principal, não há biblioteca carregável.

Presumo que você descomentei ;extension=sodiumem php.ini. Isso não era necessário, o sódio já estava lá. Você pode tentar isso comentando a linha novamente e, em seguida, executar um script PHP simples usando uma função de sódio, por exemplo:

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

Você deverá ver um resultado, sem erros.

$ php test.php
int(-1)

Se for esse o caso o seu problema não é falta de suporte de sódio, é outra coisa.

informação relacionada