ITの小技、裏技、スキルアップ プログラミング

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

投稿日:2020-02-04 更新日:

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号外 , 2024 All Rights Reserved Powered by STINGER.