我正在运行运行 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
我尝试使用以下方法安装 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 包已将钠支持直接编译到主包中,没有可加载的库。
我假设您取消了注释;extension=sodium
。php.ini
这没有必要,因为钠已经在那里了。您可以尝试再次注释掉该行,然后使用钠函数运行一个简单的 PHP 脚本,例如:
<?php
$result = sodium_compare(452654236423,647382647836);
var_dump($result);
您应该会看到结果,并且没有错误。
$ php test.php
int(-1)
如果是这样的话,你的问题就不是缺少钠支持,而是其他问题。