Laravel Habits表Seeder执行报错:Call to undefined function Termwind\ValueObjects\mb_strimwidth()
解决Seeder执行时的"Call to undefined function Termwind\ValueObjects\mb_strimwidth()"错误
这个错误的核心原因是PHP环境未启用mbstring扩展,Laravel CLI依赖的Termwind库需要该扩展提供的mb_strimwidth函数处理多字节文本。
解决步骤
Windows环境(XAMPP/WAMP)
- 打开PHP配置文件
php.ini - 找到
;extension=mbstring行,移除开头的分号; - 重启Web服务器或PHP-FPM服务
Linux(Ubuntu/Debian)
执行以下命令安装并启用扩展:
sudo apt-get install php-mbstring sudo systemctl restart php8.2-fpm # 根据你的PHP版本调整,如php8.1-fpm
Linux(CentOS/RHEL)
执行以下命令安装并启用扩展:
sudo yum install php-mbstring sudo systemctl restart php-fpm
额外代码修正提示
你的HabitsSeeder代码存在变量大小写不一致的问题:定义的变量是$Habits(大写H),但循环中使用的是$habits(小写h),这会触发变量未定义错误。修正后的代码如下:
public function run() { $habits = [ '🙂Good' => ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'], '😐Neutral' => ['k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 't'], '☹️Bad' => ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'], ]; foreach ($habits as $habit_category => $names) { foreach ($names as $name) { DB::table('habits')->insert([ 'name' => $name, 'category' => $habit_category ]); } } }
内容的提问来源于stack exchange,提问作者Evinn
相关产品推荐
相关产品推荐

