无法使用 PHP 7 初始化 mbstring

Posted

技术标签:

【中文标题】无法使用 PHP 7 初始化 mbstring【英文标题】:Cannot Initialize mbstring with PHP 7 【发布时间】:2016-04-01 00:15:36 【问题描述】:

每当我尝试访问 phpMyAdmin 时,都会收到以下错误:

"缺少 mbstring 扩展。请检查您的 PHP 配置。"

我在 CentOS 7 服务器上运行 LEMP 堆栈。我已选择使用 PHP 7 进行此安装。在运行早期版本的 PHP 的相同设置上,我没有遇到此错误。

extension_loaded('mbstring') 返回 false,即使 mbstring.ini (/etc/php.d/) 包含:

; Enable mbstring extension module
extension=mbstring.so

我 100% 确定 mbstring 模块已安装在我的服务器上。

我完全被难住了,所以如果有人有任何想法,请告诉我。谢谢。

【问题讨论】:

你看过phpinfo();吗? @Andrea 是的,它遵循主题,根本没有提及 mbstring 在这种情况下,mbstring 没有安装和工作。 extension= 不应该进入 mbstring.ini 顺便说一句,我认为它应该进入 php.ini 不适用于 PHP 7,不。来自 php.ini:Note: packaged extension modules are now loaded via the .ini files found in the directory /etc/php.d; these are loaded by default.@Andrea 我在使用 PHP8 的 DigitalOcean 上遇到了这个问题。用最佳答案解决。我认为这是一个与版本无关的解决方案。 【参考方案1】:

对于那些有 debian 的人:

 sudo apt-get install php7.0-mbstring

在 centos 中其他情况(在 centos 6.6 中测试)

sudo yum install php70w-mbstring

正如@mpen 所说,您可以激活它

sudo phpenmod mbstring

【讨论】:

PS:可以用sudo phpenmod mbstring启用 我也需要重启 apache service httpd restart 对于 CentOS 7 + PHP 7,包名是php70u-mbstring。如果你得到No package php70w-mbstring available,你必须做sudo yum list | grep "\-mbstring"才能找到对应的包。 yum install php70-mbstring 在 Amazon Linux 实例上为我完成了这项工作 @DRSDavidSoft 您应该发表您的评论作为答案,它解决了我的 php 5.6 问题【参考方案2】:

通过以下方法达成了解决方案:

我将extension=mbstring.so 放在 php.ini 中,尽管这不再是 PHP 默认使用的加载模块的方法。

来自 php.ini 本身:

注意:打包的扩展模块现在通过目录 /etc/php.d 中的 .ini 文件加载;这些是默认加载的。

这似乎解决了我的问题。如果其他人对此事有不同的看法,我仍然很想知道。

【讨论】:

也许你使用的 PHP 7 的发行版没有使用相同的配置位置? 我已经安装了php7.0-mbstring,但由于某种原因phpenmod mbstring 没有启用它。我必须使用这种方法手动启用它。此外,我的环境需要sudo service apache2 restart 才能使更改生效。【参考方案3】:

对于 centos 上的 PHP7

试试这个yum install php70-mbstring

【讨论】:

如果你有 php 7.0 这是正确的答案 注意,首先做一个 php -v 来找到你的版本。【参考方案4】:

我有这个问题很长时间了。 我找到了正确的方法(对我来说)来纠正它......而且它相当简单:)

只需在 xenial-updates 上添加“宇宙”

# cat /etc/apt/sources.list.d/*
deb [arch=amd64] http://fr.archive.ubuntu.com/ubuntu/ xenial-backports main
deb [arch=amd64] http://fr.archive.ubuntu.com/ubuntu/ xenial main universe
deb [arch=amd64] http://fr.archive.ubuntu.com/ubuntu/ xenial-proposed main
deb [arch=amd64] http://security.ubuntu.com/ubuntu xenial-security main
deb [arch=amd64] http://fr.archive.ubuntu.com/ubuntu/ xenial-updates main **universe**

【讨论】:

【参考方案5】:

在使用 sudo apt-get install php-mbstring 安装之前运行 sudo apt-get update、sudo apt-get upgrade。

我今天遇到了同样的问题,发现是这样的。

【讨论】:

以上是关于无法使用 PHP 7 初始化 mbstring的主要内容,如果未能解决你的问题,请参考以下文章

我无法发出任何工匠命令...每当我运行命令时,它都会说无法加载 php mbstring.so 5.6

启动apache 找不到 mbstring.dll

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

linux 怎么安装php-mbstring?

PHP 7 用户会话问题 - 无法初始化存储模块

CentOS 7:缺少 mbstring 扩展名