服务器中未打开Laravel 8项目..TestDatabases.php中出现错误

服务器中未打开Laravel 8项目..TestDatabases.php中出现错误,laravel,laravel-8,Laravel,Laravel 8,我在打开laravel 8项目时出错 protected function switchToDatabase($database) { DB::purge(); $default = config('database.default'); config()->set( "database.connections.{$default}.database", $

我在打开laravel 8项目时出错

 protected function switchToDatabase($database)
    {
        DB::purge();
 
        $default = config('database.default');
 
        config()->set(
            "database.connections.{$default}.database",
            $database,
        );
    }
vendor/laravel/framework/src/light/Testing/Concerns/TestDatabases.php中的“语法错误,意外“')”

删除set函数调用中的尾随“,”

config()->set(
        "database.connections.{$default}.database",
        $database
    );

您使用的是低于7.3的PHP版本

位于:
vendor/laravel/framework/src/illumb/Testing/Concerns/TestDatabases.php

更改:

    if ($url) {
        config()->set(
            "database.connections.{$default}.url",
            preg_replace('/^(.*)(\/[\w-]*)(\??.*)$/', "$1/{$database}$3", $url),
        );
    } else {
        config()->set(
            "database.connections.{$default}.database",
            $database,
        );
    }
致:


删除行尾的逗号可以解决问题。Gert B.答案确实可以解决问题,但您应该将PHP更新到7.3版或更高版本,正如Mohammad所提到的,以解决此问题。更改平台/供应商代码不是最好的选择。

如果有人像我一样被困在这个问题上,下面是我遵循的步骤。如果您的情况与我相同,那么您的php版本可能会有所不同。我从7.2升到7.4。我必须:

  • 通过自制卸载旧版本的php
brew卸载php@7.2

  • 完全删除我对旧版本php的引用,即使我已经通过自制卸载了它
rm-rf/usr/本地/地窖/php@7.2

  • 取消所有版本的链接,除了php@7.4. 对我来说那是php@7.2和没有版本规范的php
brew取消链接php

brew取消链接php@7.2

直接从供应商文件夹中的文件中删除“”不是一个好主意

要解决此问题,请更新php版本(7.3或更高版本)

如果您使用代客泊车:

  • 执行
    代客泊车php@7.3
    或更高版本
如果您正在使用类似vagrant(和apache)的软件:

  • 通过“
    vagrant ssh
    ”连接到服务器
  • 安装php7.3或更高版本(
    sudo apt install php7.3
    ),然后安装所需的相关软件包
  • 通过“
    sudoa2dismodphp7.2
    ”禁用当前php版本(如果当前版本为7.2)
  • 通过“
    sudo a2enmod php7.3
    ”启用php7.3
  • 重启apache“
    sudo服务apache2重启”
phpinfo()为您提供apache的版本,该版本是项目运行的实际版本,如果您想更改它,只需执行以下步骤:

安装要安装的php版本:

sudo add-apt-repository ppa:ondrej/php -y
sudo apt-get update

//replace X with the version you want
sudo apt-get install php7.X-fpm php7.X-curl php7.X-mbstring php7.X-mysql -y
现在重新启动apache:

sudo service apache2 restart
禁用当前php版本(phpinfo()提供的版本):

现在启用您刚刚安装的php版本:

sudo a2enmod php7.X

是的,我错过了那部分,那是一份供应商文件。。这意味着他安装了--忽略平台需求,这不是一个好主意。。。所以,请投赞成票this@GertB. 不一定,可能运行了与Apache/Nginx不同(更新)的PHP命令行版本。这根本不是一个好的解决方案!已引用的文件位于供应商文件夹中。一旦执行了
composer update
,问题就出现了again@JonasMerhej是的,我错过了那部分,那是一份供应商文件。。这意味着他安装了--忽略平台需求,这不是一个好主意。。。所以我在很久以前就把评论我错误的答案投了高票。
sudo a2dismod php7.2
sudo a2enmod php7.X