Я использую сервер 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)
Если это так, то ваша проблема не в недостатке натрия, а в чем-то другом.