无法加载动态php_mbstring.dll库

14

我正在使用以下命令在控制台中检查我的php版本:

php -v

但是我收到下面的WARNING警告信息:

PHP警告:PHP启动时无法加载动态库'/usr/lib/php/20151012/php_mbstring.dll' - /usr/lib/php/20151012/php_mbstring.dll: 没有那个文件或目录,位置位于第0行的未知文件 PHP 7.0.4-7ubuntu2 (cli) ( NTS ) 版权所有 (c) 1997-2016 The PHP Group Zend Engine v3.0.0,版权所有(c) 1998-2016 Zend Technologies, 带有Zend OPcache v7.0.6-dev,版权所有(c) 1999-2016,由Zend Technologies提供。

我已经在/etc/php/7.0/fpm/php.ini文件中取消注释了这一行extension=php_mbstring.dll,但似乎没有解决我的问题。我该如何消除这个警告?


php_mbstring.dll 适用于 Windows 系统。在 Linux 上,它被称为 mbstring.so - NikiC
1
我同意你所说的话。问题是为什么在Ubuntu中会显示Windows错误,以及如何安装mbstring.so库? - jaahvicky
先生 @jaahvicky,我遇到了同样的问题。您有密钥吗?如果有,请分享一下。 - Raham
4个回答

12
在php.ini中搜索"extension_dir",针对平台取消注释(在我的情况下是Windows :))。
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
extension_dir = "ext"

8

当我尝试从命令行运行时,遇到了相同的PHP警告。这是在一个Homestead Vagrant Ubuntu盒子上,我遇到了以下问题:

 PHP Warning:  PHP Startup: Unable to load dynamic library 
'/usr/lib/php/20160303/php_mbstring.dll' - 
/usr/lib/php/20160303/php_mbstring.dll: cannot open shared object file: No 
such file or directory in Unknown on line 0

PHP Warning:  PHP Startup: Unable to load dynamic library 
'/usr/lib/php/20160303/php_exif.dll' - /usr/lib/php/20160303/php_exif.dll: 
cannot open shared object file: No such file or directory in Unknown on line 0

我之前没意识到在命令行运行PHP或使用使用PHP的CLI时,它会使用一个位于单独/cli/目录下(例如/etc/php/7.X/cli/php.ini)的php.ini文件。根据你问题中的路径,找到/etc/php/7.0/cli/php.ini并注释掉mbstring模块即可(假设你使用的是Linux系统)。
extension=php_mbstring.dll
;extension=php_mbstring.dll ; commented out

如果这个方法不能解决你的问题,尝试运行以下命令:
php -i | grep -i "Loaded Configuration File"

这提示我找到了正确的php.ini文件:
Loaded Configuration File => /etc/php/7.1/cli/php.ini

0

这个问题与 PHP 扩展有关,您需要在 php.ini 文件中启用 mbstring 扩展。

文件路径:/etc/php/7.1/cli/php.ini

大约在第 903 行。

那里会有:

;extension=php_mbstring.dll

应该是这样的

extension=php_mbstring.dll


在现代 PHP(已测试 8.2.0),所有扩展都以平台无关的方式列在 php.ini 中,例如 extension=mbstringextension=openssl。如果指定了位置(如 Windows 的 extension_dir =“ext” 或 Linux 的 extension_dir =“./”),引擎会自动找到它们。 - AntonK

-2

我曾经遇到过同样的问题。但是在我的情况下,问题是由于开放服务器引起的。在我运行开放服务器之后,一切都很顺利!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接