【问题标题】:Laravel 8 Project is not opening in the server..getting error in TestDatabases.phpLaravel 8 项目未在服务器中打开。在 TestDatabases.php 中出现错误
【发布时间】:2021-05-03 03:52:17
【问题描述】:

打开 laravel 8 项目时出现错误

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

“语法错误,意外的 ')'” 在 vendor/laravel/framework/src/Illuminate/Testing/Concerns/TestDatabases.php 中

【问题讨论】:

    标签: laravel laravel-8


    【解决方案1】:

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

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

    【讨论】:

    • 根本不是一个好的解决方案!已引用的文件位于供应商文件夹中。一旦composer update 被执行,问题又来了
    • @JonasMerhej 是的,我错过了它是供应商文件的部分。这意味着他安装了 --ignore-platform-reqs,这不是一个好主意......所以我赞成答案很久以前就评论了我的错误。
    【解决方案2】:

    您使用的 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,
            );
        }
    

    到:

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

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

    【讨论】:

    • 我本地有 7.2 版本,想在我的服务器中设置 7.2。当我更改代码时,它起作用了。谢谢@Mohammad
    【解决方案3】:

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

    【讨论】:

    • 真的,我错过了它是供应商文件的部分。这意味着他安装了--ignore-platform-reqs,这不是一个好主意...所以对此表示赞同
    • @GertB。不一定,可能运行的 PHP 命令行版本与运行的 Apache/Nginx 不同(更新)。
    【解决方案4】:

    如果有人像我一样卡在这个问题上,我会按照以下步骤进行操作。如果你和我有同样的情况,你的 php 版本可能会有所不同。我从 7.2 到 7.4。我不得不:

    • 通过自制软件卸载我的旧版本 php

    brew uninstall php@7.2

    • 即使我已经通过自制软件卸载了旧版本的 php,也要彻底删除对旧版本 php 的引用。

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

    • 取消链接除 php@7.4 之外的所有版本。对我来说是 php@7.2 和没有版本规范的 php。

    brew unlink php

    brew unlink php@7.2

    【讨论】:

      【解决方案5】:

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

      要解决此问题,请更新您的 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

      【讨论】:

        【解决方案6】:

        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
        

        【讨论】:

          【解决方案7】:

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

          php -v
          

          你可以切换到require版本,如果你没有php@7.4就安装

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

          满足您的要求。我有迁移问题。所以

          php artisan migrate
          

          切换回默认版本

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

          【讨论】:

            猜你喜欢
            • 2021-07-24
            • 1970-01-01
            • 2019-03-16
            • 1970-01-01
            • 2012-11-05
            • 2013-07-12
            • 1970-01-01
            • 2017-01-16
            • 1970-01-01
            相关资源
            最近更新 更多