Ubuntu 20.04、PHP 7.4:mbstring 已安装但未启用

Posted

技术标签:

【中文标题】Ubuntu 20.04、PHP 7.4:mbstring 已安装但未启用【英文标题】:Ubuntu 20.04, PHP 7.4: mbstring installed but not enabled 【发布时间】:2021-08-29 16:43:15 【问题描述】:

我正在运行 Ubuntu 20.04,并使用 php 7.4。

在安装 phpBB 期间,报告“为了使 phpBB 正常运行,PHP mbstring 扩展需要可用。”我能够安装它; sudo apt list | grep mbstring 举报php7.4-mbstring/focal,now 7.4.20-1+ubuntu20.04.1+deb.sury.org+1 amd64 [residual-config]

但是,phpinfo.phpexif 部分报告Multibyte decoding support using mbstring disabledphpinfo.php 还报告了Loaded Configuration File /etc/php/7.4/apache2/php.ini

我编辑了这个 .ini 文件以在动态扩展部分取消注释 ;extension=mbstring,然后重新启动 apache。但是,phpinfo.php 仍然报告扩展名已禁用。我什至重新启动了服务器,但无济于事。我错过了什么?

【问题讨论】:

好的,这是一条线索——如果我对 mbstring 执行 php -m 和 grep,我会收到 PHP 警告:PHP 启动:无法加载动态库 'mbstring.so'(尝试过:/usr/ lib/php/20190902/mbstring.so (/usr/lib/php/20190902/mbstring.so: 无法打开共享对象文件: 没有这样的文件或目录), /usr/lib/php/20190902/mbstring.so.so (/usr/lib/php/20190902/mbstring.so.so: 无法打开共享对象文件: 没有这样的文件或目录)) 在 Unknown on line 0 原来,mbstring.so是在.../20200930,而不是20190902。这个路径是在哪里配置的,我可以改吗? 【参考方案1】:

好吧,我猜没有安装了正确的软件包;这成功了:sudo apt-get install php7.4-mbstring。这会将 mbstring.so 传递到 20200930 目录,phpinfo.php 报告它启用。

【讨论】:

【参考方案2】:

正如您所发现的 - 软件包在过去安装但已被删除(但未清除,因此配置文件保持不变),这由 [residual-config] 指示。

安装php-mbstring 而不是php7.4-mbstring,您的设置将更加面向未来,除非您的用例需要这个确切的版本。 php-mbstring 只是一个依赖包,依赖于当前版本,所以在 20.04 上它会安装 php7.4-mbstring 但是当你升级到下一个操作系统版本时,它将根据随它一起发布的任何 php 版本进行升级。

【讨论】:

以上是关于Ubuntu 20.04、PHP 7.4:mbstring 已安装但未启用的主要内容,如果未能解决你的问题,请参考以下文章

升级到 Ubuntu 20.04 后 PHP MySQLi 不再工作 [重复]

尝试在 ubuntu 20.04 上安装 php-mbstring

来自 xampp 的 Phpinfo() 不显示 php-redis 扩展 (UBUNTU 20.04)

Ubuntu 20.04 安装配置nginx + PHP

解决Ubuntu下PHP报错could not find driver - 面板phpinfo中PDO drivers > no value的问题

尝试在我的 linux ubuntu 20.04 中执行 PHP artisan serve 时遇到问题