服务器中未打开Laravel 8项目..TestDatabases.php中出现错误
我在打开laravel 8项目时出错服务器中未打开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", $
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 ssh
- 安装php7.3或更高版本(
),然后安装所需的相关软件包sudo apt install php7.3
- 通过“
”禁用当前php版本(如果当前版本为7.2)sudoa2dismodphp7.2
- 通过“
”启用php7.3sudo a2enmod php7.3
- 重启apache“
sudo服务apache2重启”
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