![Cómo instalar PHP Sodium en Ubuntu 22.04](https://rvso.com/image/782596/C%C3%B3mo%20instalar%20PHP%20Sodium%20en%20Ubuntu%2022.04.png)
Estoy ejecutando un servidor de Google Cloud con Ubuntu 22.04. Es una pila LAMP típica (PHP es la versión 8.1.2). Algunos de los sitios web del servidor utilizan Laravel 8.
Recientemente actualicé uno de los sitios web a Laravel 9 y recibí el siguiente error:
Class 'Facade\Ignition\IgnitionServiceProvider' not found
A partir de un poco de investigación, aparentemente esto se debe a que falta una extensión PHP Sodium.
Si ejecuto php -i | grep sodium
usando una terminal obtengo:
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
Intenté instalar Sodium usando:
sudo apt install php-sodium
Y recibió la siguiente respuesta:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package php-sodium
Si ejecuto algún comando PHP desde la terminal, la respuesta comienza con:
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
No puedo encontrar ninguna otra publicación con un problema similar y una solución funcional.
¡Cualquier ayuda sería apreciada!
Respuesta1
En Ubuntu 22.04, el paquete php8 tiene soporte de sodio directamente compilado en el paquete principal, no hay una biblioteca cargable.
Supongo que descomentaste ;extension=sodium
en php.ini
. Eso no era necesario, el sodio ya estaba allí. Puedes intentarlo comentando la línea nuevamente y luego ejecutar un script PHP simple usando una función de sodio, por ejemplo:
<?php
$result = sodium_compare(452654236423,647382647836);
var_dump($result);
Deberías ver un resultado, sin ningún error.
$ php test.php
int(-1)
Si ese es el caso, tu problema no es la falta de soporte de sodio, es otra cosa.