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
我在打开 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