You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu服务器Laravel8执行Composer命令报错:preg_match参数错误

解决Composer执行preg_match() expects parameter 2 to be string, array given错误

针对你在Ubuntu 18.04.5 LTS部署Laravel 8项目时遇到的这个错误,按以下步骤排查解决:

1. 确认Composer版本兼容性

Laravel 8要求Composer 2.0及以上版本,Ubuntu 18.04默认自带的Composer版本可能偏低,先升级Composer:

composer self-update --2

升级完成后重新执行composer update -v测试。

2. 检查composer.json配置格式错误

这个错误绝大多数是因为composer.json字段格式不符合规范,重点排查以下部分:

  • require/require-dev字段:确保所有依赖都是"包名": "版本约束"的键值对,禁止出现数组格式的配置
  • scripts字段:脚本命令必须是字符串,不能写成数组形式
  • repositories字段:仓库的url必须是字符串,避免误写为数组
  • 验证JSON语法:可以通过本地命令php -r 'json_decode(file_get_contents("composer.json"));'快速检查是否存在语法错误

3. 彻底清理Composer缓存与残留文件

缓存或旧的.lock文件可能留存异常配置,执行以下命令:

# 清除Composer缓存
composer clear-cache

# 删除vendor目录和composer.lock
rm -rf vendor composer.lock

# 重新安装依赖
composer install

4. 验证PHP环境符合要求

Laravel 8需要PHP 7.3及以上版本,同时确保pcre扩展正常启用:

# 查看PHP版本
php -v

# 检查pcre扩展是否存在
php -m | grep pcre

如果PHP版本过低,需要升级PHP;如果pcre未启用,可通过apt install php-pcre命令安装对应扩展(Ubuntu环境)。

5. 排查第三方依赖冲突

若以上步骤无效,尝试逐步排查require-dev中的依赖:

  • 临时注释掉composer.json里require-dev下的部分依赖
  • 执行composer update,观察错误是否消失
  • 定位到问题依赖后,尝试更新该依赖版本,或替换为功能类似的替代包

内容的提问来源于stack exchange,提问作者Root

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 05:45:30