私は Ubuntu 22.04 を実行している Google Cloud サーバーを実行しています。これは典型的な LAMP スタックです (PHP はバージョン 8.1.2)。サーバー上の一部の Web サイトでは Laravel 8 を使用しています。
最近、ウェブサイトの 1 つを 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 パッケージにはメイン パッケージに直接コンパイルされた Natodium サポートがあり、ロード可能なライブラリはありません。
;extension=sodium
のコメントを解除したと思いますphp.ini
。これは必要ありませんでした。sodium はすでに存在していました。この行を再度コメント アウトして、sodium 関数を使用した簡単な PHP スクリプトを実行して試すことができます。例:
<?php
$result = sodium_compare(452654236423,647382647836);
var_dump($result);
エラーのない結果が表示されるはずです。
$ php test.php
int(-1)
その場合、あなたの問題はナトリウム補給不足ではなく、何か他のことにあります。