我正在運行運行 Ubuntu 22.04 的 Google Cloud 伺服器。這是一個典型的 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
我嘗試使用以下方法安裝鈉:
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 軟體包具有直接編譯到主軟體包中的鈉支持,沒有可載入的函式庫。
我假設你沒有;extension=sodium
評論php.ini
。那是不必要的,鈉已經存在了。您可以嘗試再次註解掉該行,然後使用鈉函數執行一個簡單的 PHP 腳本,例如:
<?php
$result = sodium_compare(452654236423,647382647836);
var_dump($result);
您應該看到結果,沒有錯誤。
$ php test.php
int(-1)
如果是這種情況,你的問題不是缺乏鈉支持,而是其他問題。