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

Pre*_*qar 6 laravel laravel-8

打开 laravel 8 项目时出现错误

 protected function switchToDatabase($database)
    {
        DB::purge();
 
        $default = config('database.default');
 
        config()->set(
            "database.connections.{$default}.database",
            $database,
        );
    }
Run Code Online (Sandbox Code Playgroud)

供应商/laravel/framework/src/Illuminate/Testing/Concerns/TestDatabases.php 中的“语法错误,意外的‘)’”

Hug*_*o S 7

Gert B. answer 确实解决了这个问题,但你应该像 Mohammad 提到的那样将 PHP 更新到 7.3 或更高版本来解决这个问题。更改平台/供应商代码不是最佳选择。


Ger*_* B. 5

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

config()->set(
        "database.connections.{$default}.database",
        $database
    );
Run Code Online (Sandbox Code Playgroud)


Moh*_*d b 5

您使用的 PHP 版本低于 7.3

在: vendor/laravel/framework/src/Illuminate/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,
        );
    }
Run Code Online (Sandbox Code Playgroud)

到:

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

删除行尾的逗号可解决此问题。