1. 程式人生 > >Laravel 4.2升級5.0遇到的奇葩問題

Laravel 4.2升級5.0遇到的奇葩問題

  • 按官網嚮導操作
  • 修改自己的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 後又報錯了,截圖如下:
這裡說是app.php裡配置的一個依賴包找不到
也不知道是不是這個國內映象的包完整不完整導致的?

稍微做了一些調整

修改了:

"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 framework 的版本問題
該怎麼辦?
真的不知道該如何是好了,最後決定重新下載laravel的安裝包,然後再重新來一遍了。

試試重新下載laravel安裝包

執行:

composer global require "laravel/installer=~1.1"

然後就是漫長的等待了…

解決辦法

  1. barryvdh/laravel-ide-helper版本問題,換成如下:
"barryvdh/laravel-ide-helper": "2.*"
  1. 還有一個版本號問題way/generators,這些版本問題都是5.0已經不支援了,所以換版本號:
"way/generators": "~3.0"
  1. 刪除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成功了。

  1. 雖然執行成功了,但是表單請求又有問題了:
    所有表單提交都會有這個錯誤
    解決辦法:
    在表單裡新增一個隱藏提交值
<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終於告一段落。