![Como instalar PHP Sódio no Ubuntu 22.04](https://rvso.com/image/782596/Como%20instalar%20PHP%20S%C3%B3dio%20no%20Ubuntu%2022.04.png)
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 sodium
usando 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=sodium
em 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.