Laravel更新到5.8,更新依赖
Laravel update to 5.8, updating dependencies
我目前 laravel 从 5.2 更新到 5.8。通过这个过程,我让它工作并显示网站,但我没有添加所有 5.8 依赖项,就像我在 5.8 上从头开始项目一样。所以我从头开始创建了一个 laravel 项目,看看会包含什么,然后我开始慢慢地把东西移过去。目前我正在尝试让 composer.json 几乎与新的 laravel 5.8 项目相同。这就是工作原理 --
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": [ "framework", "laravel" ],
"license": "MIT",
"type": "project",
"require": {
"php": "^7.1.3",
"laravel/framework": "5.8.*",
"intervention/image": "^2.3",
"guzzlehttp/guzzle": "^6.2",
"fideloper/proxy": "^4.0",
"laravel/cashier": "~7.0",
"codedge/laravel-fpdf": "^1.0",
"phpseclib/phpseclib": "1.0.*",
"laravelcollective/html": "~5.0",
"maatwebsite/excel": "^2.1",
"phpoffice/phpspreadsheet": "^1.4"
},
"require-dev": {
"fzaninotto/faker": "~1.4",
"filp/whoops": "~2.0",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "^7.5",
"symfony/css-selector": "^4.0",
"symfony/dom-crawler": "^4.0"
},
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\": "app/"
}
},
"autoload-dev": {
"classmap": [
"tests/TestCase.php"
]
},
"scripts": {
"post-root-package-install": [
"php -r \"copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"php artisan key:generate"
],
"post-install-cmd": [
"Illuminate\Foundation\ComposerScripts::postInstall",
"php artisan optimize"
],
"post-update-cmd": [
"Illuminate\Foundation\ComposerScripts::postUpdate",
"php artisan optimize"
],
"post-autoload-dump": [
"Illuminate\Foundation\ComposerScripts::postAutoloadDump",
"@php artisan package:discover"
]
},
"config": {
"preferred-install": "dist"
}
}
我已经改成了 --
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": [
"framework",
"laravel"
],
"license": "MIT",
"type": "project",
"require": {
"php": "^7.1.3",
"laravel/framework": "5.8.*",
"intervention/image": "^2.3",
"guzzlehttp/guzzle": "^6.2",
"fideloper/proxy": "^4.0",
"laravel/cashier": "~7.0",
"codedge/laravel-fpdf": "^1.0",
"phpseclib/phpseclib": "1.0.*",
"laravelcollective/html": "~5.0",
"maatwebsite/excel": "^2.1",
"phpoffice/phpspreadsheet": "^1.4",
"laravel/tinker": "^1.0"
},
"require-dev": {
"beyondcode/laravel-dump-server": "^1.0",
"fzaninotto/faker": "^1.4",
"filp/whoops": "^2.0",
"mockery/mockery": "^1.0",
"nunomaduro/collision": "^2.0",
"phpunit/phpunit": "^7.5",
"symfony/css-selector": "^4.0",
"symfony/dom-crawler": "^4.0"
},
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true
},
"extra": {
"laravel": {
"dont-discover": []
}
},
"autoload": {
"psr-4": {
"App\": "app/"
},
"classmap": [
"database/seeds",
"database/factories"
]
},
"autoload-dev": {
"psr-4": {
"Tests\": "tests/"
}
},
"minimum-stability": "dev",
"prefer-stable": true,
"scripts": {
"post-root-package-install": [
"php -r \"copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"php artisan key:generate"
],
"post-install-cmd": [
"Illuminate\Foundation\ComposerScripts::postInstall",
"php artisan optimize"
],
"post-update-cmd": [
"Illuminate\Foundation\ComposerScripts::postUpdate",
"php artisan optimize"
],
"post-autoload-dump": [
"Illuminate\Foundation\ComposerScripts::postAutoloadDump",
"@php artisan package:discover"
]
}
}
在尝试 运行 这个更新脚本后,我得到了一个看起来像这样的错误。
Package manifest generated successfully.
> post-update-cmd: Illuminate\Foundation\ComposerScripts::postUpdate
> post-update-cmd: php artisan optimize
Configuration cache cleared!
Configuration cached successfully!
Route cache cleared!
LogicException : Unable to prepare route [api/user] for serialization. Uses Closure.
at C:\Base\vendor\laravel\framework\src\Illuminate\Routing\Route.php:917
913| */
914| public function prepareForSerialization()
915| {
916| if ($this->action['uses'] instanceof Closure) {
> 917| throw new LogicException("Unable to prepare route [{$this->uri}] for serialization. Uses Closure.");
918| }
919|
920| $this->compileRoute();
921|
Exception trace:
1 Illuminate\Routing\Route::prepareForSerialization()
C:\Base\vendor\laravel\framework\src\Illuminate\Foundation\Console\RouteCacheCommand.php:62
2 Illuminate\Foundation\Console\RouteCacheCommand::handle()
C:\Base\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php:32
Please use the argument -v to see more details.
Script php artisan optimize handling the post-update-cmd event returned with error code 1
任何建议
我想通了,api 默认情况下使用一个包含 function() 的路由。由于闭包不能被序列化,当你有使用闭包的路由时,你不能缓存你的路由。
修复 ---
//Route::middleware('auth:api')->get('/user', function (Request $request) {
// return $request->user();
//});
注释掉\routes\api中的测试路线。php
我目前 laravel 从 5.2 更新到 5.8。通过这个过程,我让它工作并显示网站,但我没有添加所有 5.8 依赖项,就像我在 5.8 上从头开始项目一样。所以我从头开始创建了一个 laravel 项目,看看会包含什么,然后我开始慢慢地把东西移过去。目前我正在尝试让 composer.json 几乎与新的 laravel 5.8 项目相同。这就是工作原理 --
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": [ "framework", "laravel" ],
"license": "MIT",
"type": "project",
"require": {
"php": "^7.1.3",
"laravel/framework": "5.8.*",
"intervention/image": "^2.3",
"guzzlehttp/guzzle": "^6.2",
"fideloper/proxy": "^4.0",
"laravel/cashier": "~7.0",
"codedge/laravel-fpdf": "^1.0",
"phpseclib/phpseclib": "1.0.*",
"laravelcollective/html": "~5.0",
"maatwebsite/excel": "^2.1",
"phpoffice/phpspreadsheet": "^1.4"
},
"require-dev": {
"fzaninotto/faker": "~1.4",
"filp/whoops": "~2.0",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "^7.5",
"symfony/css-selector": "^4.0",
"symfony/dom-crawler": "^4.0"
},
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\": "app/"
}
},
"autoload-dev": {
"classmap": [
"tests/TestCase.php"
]
},
"scripts": {
"post-root-package-install": [
"php -r \"copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"php artisan key:generate"
],
"post-install-cmd": [
"Illuminate\Foundation\ComposerScripts::postInstall",
"php artisan optimize"
],
"post-update-cmd": [
"Illuminate\Foundation\ComposerScripts::postUpdate",
"php artisan optimize"
],
"post-autoload-dump": [
"Illuminate\Foundation\ComposerScripts::postAutoloadDump",
"@php artisan package:discover"
]
},
"config": {
"preferred-install": "dist"
}
}
我已经改成了 --
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": [
"framework",
"laravel"
],
"license": "MIT",
"type": "project",
"require": {
"php": "^7.1.3",
"laravel/framework": "5.8.*",
"intervention/image": "^2.3",
"guzzlehttp/guzzle": "^6.2",
"fideloper/proxy": "^4.0",
"laravel/cashier": "~7.0",
"codedge/laravel-fpdf": "^1.0",
"phpseclib/phpseclib": "1.0.*",
"laravelcollective/html": "~5.0",
"maatwebsite/excel": "^2.1",
"phpoffice/phpspreadsheet": "^1.4",
"laravel/tinker": "^1.0"
},
"require-dev": {
"beyondcode/laravel-dump-server": "^1.0",
"fzaninotto/faker": "^1.4",
"filp/whoops": "^2.0",
"mockery/mockery": "^1.0",
"nunomaduro/collision": "^2.0",
"phpunit/phpunit": "^7.5",
"symfony/css-selector": "^4.0",
"symfony/dom-crawler": "^4.0"
},
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true
},
"extra": {
"laravel": {
"dont-discover": []
}
},
"autoload": {
"psr-4": {
"App\": "app/"
},
"classmap": [
"database/seeds",
"database/factories"
]
},
"autoload-dev": {
"psr-4": {
"Tests\": "tests/"
}
},
"minimum-stability": "dev",
"prefer-stable": true,
"scripts": {
"post-root-package-install": [
"php -r \"copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"php artisan key:generate"
],
"post-install-cmd": [
"Illuminate\Foundation\ComposerScripts::postInstall",
"php artisan optimize"
],
"post-update-cmd": [
"Illuminate\Foundation\ComposerScripts::postUpdate",
"php artisan optimize"
],
"post-autoload-dump": [
"Illuminate\Foundation\ComposerScripts::postAutoloadDump",
"@php artisan package:discover"
]
}
}
在尝试 运行 这个更新脚本后,我得到了一个看起来像这样的错误。
Package manifest generated successfully.
> post-update-cmd: Illuminate\Foundation\ComposerScripts::postUpdate
> post-update-cmd: php artisan optimize
Configuration cache cleared!
Configuration cached successfully!
Route cache cleared!
LogicException : Unable to prepare route [api/user] for serialization. Uses Closure.
at C:\Base\vendor\laravel\framework\src\Illuminate\Routing\Route.php:917
913| */
914| public function prepareForSerialization()
915| {
916| if ($this->action['uses'] instanceof Closure) {
> 917| throw new LogicException("Unable to prepare route [{$this->uri}] for serialization. Uses Closure.");
918| }
919|
920| $this->compileRoute();
921|
Exception trace:
1 Illuminate\Routing\Route::prepareForSerialization()
C:\Base\vendor\laravel\framework\src\Illuminate\Foundation\Console\RouteCacheCommand.php:62
2 Illuminate\Foundation\Console\RouteCacheCommand::handle()
C:\Base\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php:32
Please use the argument -v to see more details.
Script php artisan optimize handling the post-update-cmd event returned with error code 1
任何建议
我想通了,api 默认情况下使用一个包含 function() 的路由。由于闭包不能被序列化,当你有使用闭包的路由时,你不能缓存你的路由。
修复 ---
//Route::middleware('auth:api')->get('/user', function (Request $request) {
// return $request->user();
//});
注释掉\routes\api中的测试路线。php