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

Laravel 8 Project is not opening in the server..getting error in TestDatabases.php

我在打开 laravel 8 项目时遇到错误

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

"syntax error, unexpected ')'" in vendor/laravel/framework/src/Illuminate/Testing/Concerns/TestDatabases.php

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

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

您使用的 PHP 版本低于 7.3

在:vendor/laravel/framework/src/Illuminate/Testing/Concerns/TestDatabases.php

变化:

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

至:

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

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

Gert B. answer 确实解决了这个问题,但是您应该将 PHP 更新到版本 7.3 或更高版本,正如 Mohammad 提到的那样,以解决这个问题。更改 platform/vendor 代码不是最佳选择。

如果有人像我一样坚持这一点,这里是我遵循的步骤。如果你和我有同样的情况,你的 php 版本可能会不同。我从 7.2 到 7.4。我必须:

  • 通过自制程序卸载我的旧版本 php

brew uninstall php@7.2

  • 完全删除我对旧版本 php 的引用,即使我已经通过自制程序卸载了它。

rm -rf /usr/local/Cellar/php@7.2

  • 取消链接除 php@7.4 以外的所有版本。对我来说,那是 php@7.2 和 php,没有版本说明。

brew unlink php

brew unlink php@7.2

直接从 vendors 文件夹中的文件中删除“,”不是一个好主意。

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

如果您使用代客服务:

  • 执行 valet use php@7.3 或更高

如果您使用的是 vagrant(和 apache)之类的东西:

  • 通过“vagrant ssh”连接到服务器
  • 安装 php7.3 或更高版本 (sudo apt install php7.3),然后安装您想要的相关软件包
  • 通过“sudo a2dismod php7.2”禁用您当前的 php 版本(如果您当前的版本是 7.2)
  • 通过“sudo a2enmod php7.3”启用 php7.3“
  • 重启apache“sudo service apache2 restart

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() 给你的版本):

sudo a2dismod php7.2

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

sudo a2enmod php7.X

根据我在 Ubuntu Linux 中的经验,请检查您的 php 版本

php -v

你可以切换到需要的版本,如果你没有安装php@7.4

sudo update-alternatives --set php /usr/bin/php7.4

做你的要求。我有迁移问题。所以

php artisan migrate

切换回默认版本

sudo update-alternatives --set php /usr/bin/php7.2