Laravel5 Error集

全般

PHP Parse error: syntax error, unexpected ‘.’, expecting ‘&’ or variable (T_VARIABLE) in

インストールしたてのときとか、Git cloneしたてのときによく出てくるんですが、面倒なので再インストールすると直ったりします。
同じような現象で、

Parse error: syntax error, unexpected '?' in ...

というのもPHPが古かったりするのが原因かもです。

.envを読み込まない

なかなか根幹なところでびっくりしますが、キャッシュ消すと大抵治るっぽいです。

rm -f bootstrap/cache/config.php

ここは設定関連の情報を配列で自動生成していて、こいつが残っていると設定変更がいつまでも反映されてないっていう感じです。

artisan系

[Symfony\Component\Debug\Exception\FatalErrorException]
syntax error, unexpected ‘.’

vendarの中のファイルに謎のピリオドが入っていてそれが原因というふうなエラーなんですが、これ単にphpのバージョンが古いってことだと思います。Larave推奨のphp5.6.4以上を使うとこういう系のエラーが出ないです。
Laravel5.4でphp5.6.4以上使えば問題なさそうです。それでも何か変なときは、composerでupdateするかoptimizeすると直ったりするかも。

artisan route:list

PHP Fatal error: Uncaught Error: Call to undefined method > Illuminate\Log\LogServiceProvider::configureStorage/logs/error.logHandler() in /Users/osamu/localhost/uuouu/gate/vendor/laravel/framework/src/Illuminate/Log/LogServiceProvider.php:60

Symfonyのデバッカーが出てこなかったり、Controllerがことごとく500エラーになるなど正直デバックのしようもない感じのエラーで、php artisan route:listとかphp artisan route:cacheで上記エラーが出るんですね。Laravelごと入れ替えた方がいいかも。

artisan route:cache

[LogicException]
Unable to prepare route [api/user] for serialization. Uses Closure.

こっちはクロージャがキャシュされないというものなのでエラーじゃないです。
https://laravel.com/docs/5.3/controllers#route-caching

[ReflectionException]
Class App\Http\Controllers\foo\barController does not exist

結構な頻度で出ます。ファイル自体は存在しているのにこのエラーが出るのは、そもそもClassがオートロードされていない可能性が高いです。
http://qiita.com/niiyz/items/5b83ef5255a1ec64d9d6

artisan migrate

artisan migrate

[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table users add unique users_email_unique(email))
[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

いろいろ面倒くさいけど、このように調整するとOK。
Laravel5.4でmigrateが失敗する

インストール直後のSQLエラー

QueryException in Connection.php line 647:
SQLSTATE[HY000] [1049] Unknown database ‘laravel_db’ (SQL: select * from sessions where id = 9CuAvW43XU797SYl9DGLsiRP7iOnkOkyX26SJrY2 limit 1)

tokenをDBセッションで扱っているようにみえるエラーなので、なんでなんだ?って感じです。laravel_dbっていうDBのsessionsテーブルがないと当然こういうエラーがでちゃいます。

メール送信関連

Swiftmailで時々起こる問題。強制的に送信してしまうということも可能ですが、SMTPサーバーの設定を単にやってない系も問題だったりします。

Address in mailbox given [] does not comply with RFC 2822, 3.6.2.

Last update: 2018.01.04 (木)