PHP 8.2启用mbstring后Laravel开发服务器报重复加载警告求助
问题描述
我使用ElementaryOS(本质为Ubuntu系统),已安装PHP 8.2。尝试获取mbstring扩展时,执行sudo apt-get install php8.2-mbstring提示该扩展已是最新版本,但phpinfo显示Multibyte decoding support using mbstring disabled,网站也因缺少该扩展报错。取消php.ini文件中;extension=mbstring的注释后,mbstring显示已启用,但启动Laravel开发服务器(执行php artisan serve)时出现警告:
$ php artisan serve PHP Warning: Module "mbstring" is already loaded in Unknown on line 0 WARN PHP Warning: Module "mbstring" is already loaded in Unknown on line 0. INFO Server running on [http://127.0.0.1:8000]. Press Ctrl+C to stop the server
请问该警告是什么意思?如何在保留mbstring的前提下消除这个警告?
解答
警告含义
这个警告表示mbstring模块被重复加载了:通过apt安装php8.2-mbstring时,系统已经自动在PHP的扩展配置目录里添加了加载mbstring的规则,而你手动修改php.ini时又开启了extension=mbstring,导致PHP启动时尝试加载两次同一个模块,触发警告。
消除警告的步骤
- 确认自动加载的配置文件:在Ubuntu/Debian系系统中,PHP扩展的配置通常存放在对应环境的
conf.d目录下。比如Laravel开发服务器用的是CLI环境,对应的配置路径是/etc/php/8.2/cli/conf.d/,里面应该有一个类似20-mbstring.ini的文件,内容就是extension=mbstring——这是apt安装扩展时自动生成的,已经负责加载mbstring了。 - 恢复php.ini的修改:找到你之前修改的CLI环境php.ini文件(路径一般是
/etc/php/8.2/cli/php.ini),把你取消注释的extension=mbstring重新加上分号注释(变回;extension=mbstring),保存文件。 - 验证结果:执行
php -m命令,输出列表里应该能看到mbstring,且没有重复加载的警告;再启动php artisan serve,之前的警告就会消失。 - 网页环境额外检查:如果你的网站还用到了FPM环境(比如Nginx/Apache搭配php-fpm),需要对应检查
/etc/php/8.2/fpm/php.ini和/etc/php/8.2/fpm/conf.d/下的配置,确保不要在php.ini里重复开启extension=mbstring。
内容的提问来源于stack exchange,提问作者cheryllium
相关产品推荐
相关产品推荐

