Laravel 4.2升級5.0遇到的奇葩問題
阿新 • • 發佈:2019-02-01
- 按官網嚮導操作
- 修改自己的composer.json配置
按官網嚮導
修改composer.json配置
"require": {
"laravel/framework": "4.2.*",
"cartalyst/sentry": "2.1.4",
"barryvdh/laravel-ide-helper": "1.*"
},
"require-dev": {
"way/generators": "~2.0",
"fzaninotto/faker": "1.4.0",
"edvinaskrucas/notification" : "3.0.1"
},
修改了這寫配置後,執行composer update,就一直不動,截圖如下:
換成國內映象
"minimum-stability": "stable",
"repositories": [
{"type": "composer", "url": "http://pkg.phpcomposer.com/repo/packagist/"},
{"packagist": false}
]
在composer.json最後加上這個後,composer update 後又報錯了,截圖如下:
也不知道是不是這個國內映象的包完整不完整導致的?
稍微做了一些調整
修改了:
"require": {
"laravel/framework": "5.0.*",
"cartalyst/sentry": "2.1.4",
"barryvdh/laravel-ide-helper": "1.*"
},
"require-dev": {
"phpunit/phpunit": "~4.0",
"phpspec/phpspec": "~2.1",
"way/generators": "~2.0",
"fzaninotto/faker" : "1.4.0",
"edvinaskrucas/notification": "3.0.1"
},
再次update,結果又報錯了:
該怎麼辦?
真的不知道該如何是好了,最後決定重新下載laravel的安裝包,然後再重新來一遍了。
試試重新下載laravel安裝包
執行:
composer global require "laravel/installer=~1.1"
然後就是漫長的等待了…
解決辦法
- barryvdh/laravel-ide-helper版本問題,換成如下:
"barryvdh/laravel-ide-helper": "2.*"
- 還有一個版本號問題way/generators,這些版本問題都是5.0已經不支援了,所以換版本號:
"way/generators": "~3.0"
- 刪除sentry外掛(應該是5.0不支援該外掛的2.版本,然後3.版本又收費),所以選擇不使用了:
"require-dev" : {
"phpunit/phpunit" : "~4.0",
"phpspec/phpspec" : "~2.1",
"fzaninotto/faker": "1.4.0",
"edvinaskrucas/notification": "4.*",
"way/generators": "~3.0"
},
"scripts" : {
"post-install-cmd" : [ "php artisan clear-compiled", "php artisan optimize" ],
"post-update-cmd" : [ "php artisan clear-compiled", "php artisan optimize" ],
"post-create-project-cmd" : [ "php -r \"copy('.env.example', '.env');\"", "php artisan key:generate" ]
},
還需要在app.php裡去掉相應的引用。
'Illuminate\Workbench\WorkbenchServiceProvider',
'Way\Generators\GeneratorsServiceProvider',
'Cartalyst\Sentry\SentryServiceProvider',
去掉這幾個後,終於composer update成功了。
- 雖然執行成功了,但是表單請求又有問題了:
解決辦法:
在表單裡新增一個隱藏提交值
<input type="hidden" name="_token" value="{{ csrf_token() }}">
當然如果不想用這個:CSRF 保護,也就是不需要每個form表單裡都加這句,也是可以的。
請移除 App\Http\Kernel 中 middleware 陣列內的這一行
'App\Http\Middleware\VerifyCsrfToken',
如果您想在其他地方使用它,加入這一行到 $routeMiddleware:
'csrf' => 'App\Http\Middleware\VerifyCsrfToken',
終於成功了
到此為止,4.2升級5.0終於告一段落。