Laravel Argument 2 passed to str_contains() must be of the type string, array given, called in

迁移Laravel到新服务器后进行composer 操作报错,报错如下:

Argument 2 passed to str_contains() must be of the type string, array given, called in

解决问题的思路:
1. 找到str_contains() 函数,查询问题;

2. 定位到报错文件:app/helpers.php 435行,查询得知,使用到了str_contains函数,进行判断。

查询php手册后得知,str_contains 是一个php8 的版本。

我原来一直使用php7呀,现在为什么会变成php8的版本了呢?

结果得知:polyfill-php80/bootstrap.php 文件使用到了php8。

那么,新的解决问题的思路来了:

  1. 升级php7 至php8
  2. 处理composer 依赖

解决办法如下,在composer.json中增加禁止的依赖,重新进行composer install操作,问题解决。

 "conflict": {
        "symfony/polyfill-php80": "*"
    }

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注