ITの小技 プログラミング

PHP、laravelの名前空間(namespace)関連のエラーについて

更新日:

laravelでphp artisan make:provider ○○などを使ってサービスプロバイダ(service provider)を新しく追加した際に、
Namespace declaration statement has to be the very first statement or after any declare call in the script
というエラーが出る場合があります。これは、そのままの意味で捉えると、namespeceの前には<?phpという文字しか入れちゃ駄目だよ、ということが書いているんだと言うことが他のサイトを見て分かったが、自分の場合はどれだけ見返してみてもnamespaceの前には<?phpしか書いて無かったにも関わらずこのエラーメッセージが出てた。

で、色々と試行錯誤した上で見つけた解答は、phpファイルの作成時、または保存時の文字コードが原因となっていることが分かった。

ファイルの文字コードを「UTF-8N」。改行コードは「LF」にしたら正常に動作した。なお文字コードの変更は、TeraPadというフリーソフトのメモ帳ソフトで、ファイル→文字/改行コードの指定保存で変更できる。
基本的にlaravelのファイルは全てUTF-8Nで作ったほうがいいのかもしれない。※UTF-8ではないことに注意!

調べてみたら、やはり2バイト文字圏で多くこの質問が寄せられているように感じた。改行コードに問題があるのか?あと、UTF-8NのファイルとUTF-8のファイルが混在してる場合、なぜかたまにblade.phpのテンプレートエンジンファイルが正常に読み込まれないといったこともあった。

トップページへ戻る

-ITの小技, プログラミング

Copyright© IT号外 , 2020 All Rights Reserved Powered by STINGER.

search envelope heart star user close search-plus home clock update edit share-square chevron-left chevron-right leaf exclamation-triangle calendar comment thumb-tack link navicon aside angle-double-up angle-double-down angle-up angle-down star-half status image gallery music video category tag chat quote googleplus facebook instagram twitter rss