[初回公開] 2021年10月13日
EC サイトのオープンソース「EC-CUBE」をカスタマイズしていると「Namespace declaration statement has to be the very first statement ・・・」というエラーが発生することがあり、このエラーは EC-CUBE に限らず PHP でプログラムしていると発生しうる事象のため、原因と対応方法について紹介する。
このページの目次
1.EC-CUBE とは
EC-CUBE とは、株式会社イーシーキューブが開発しているプログラム言語「PHP」で動作する EC サイトのプログラムである。
オープンソースであるため、利用規約に沿えば無償で利用することができる。
EC-CUBE はサーバにインストールすることでパソコンやスマートフォンのブラウザから利用者は商品を購入し、EC サイトの運営者は商品を登録したり、発送待ちや過去の受注内容の管理を行うことが可能なため小規模店舗でも活用されている。
また、配送業者と支払い先の登録など店舗運営する上で必要な機能が一通り揃っているため、プログラムができない担当者でも EC サイトを簡単に開設することが特徴で、自身でカスタマイズしたり、有料のオプションを購入することでクレジット決済への対応や、納品書も EC-CUBE 上から直接印刷させるなど業務効率化にも利用できるツールである。
2.PHP で「Namespace declaration ・・・」が出る様子
PHP で「Namespace declaration statement has to be the very first statement ・・・」が出る様子としては、PHP プログラムを実行すると下記のように直訳すると「名前空間宣言ステートメントは、最初のステートメント、または宣言呼び出しの後にある必要がある。」の旨が表示される。
[Tue Feb 09 10:25:20.711598 2021] [php7:error] [pid 6529] [client 10.***.***.***:54798] PHP Fatal error: Namespace declaration statement has to be the very first statement or after any declare call in the script in /var/www/html/cube4_3/app/Customize/Controller/SearchlogController.php on line 3
EC-CUBE(バージョン 4 系)をカスタマイズするために簡単なサンプルコードを用意して動作確認する中で発生したもので、実行と同時に動作及び画面表示されなくなる。
EC-CUBE は PHP のエラー内容はブラウザに表示されないようになっているため、ウェブサーバのログで上記の内容を確認することができる。
3.PHP で「Namespace declaration ・・・」が出る原因
PHP で「Namespace declaration statement has to be the very first statement ・・・」が出る原因としては、PHP のスクリプトであることを示す行が 1 行目に無い、もしくは改行こーどしかないことが原因である。
例えば PHP のコードが次のような場合である。
← 空の行 <?php namespace ****
4.PHP で「Namespace declaration ・・・」が出た場合の対応方法
PHP で「Namespace declaration statement has to be the very first statement ・・・」が出た場合の対応方法としては、1 行目に実行してようとしているファイルが下記のように PHP スクリプトであることを宣言することで解決する。
<?php ← 1 行目に必ず記載 namespace ****
また、1 行目の <?php の前にはコメントも記載してはならず、コメントを記載する場合は <?php の後の行でなければならない。
尚、EC-CUBE をカスタマイズする際に既にあるファイルをコピーして利用する場合は 1 行目に <?php があるので問題ないが、空のファイルからカスタマイズしたり、コメントを残す場合は注意が必要である。
関連記事
EC-CUBE をカスタマイズして検索で入力されたキーワードをデータベースに保存する方法
EC-CUBE には初期インストール時からサイト内の商品を検索する機能が実装されているが、どのようなキーワードで検索されたかはウェブサーバのログなどには残らないため、利用者が求めている商品を集計したり、どの…
EC-CUBE 4 内に静的なオリジナルページを作成する方法
EC-CUBE には商品一覧やカート機能など EC サイトを運営する上で必要な機能が一通り揃っているが、利用者に対して購入時の諸注意やリンク集など商品以外の情報を伝えるべく特別なプログラムを用いない HTML タグ…
EC-CUBE で文字化けする場合の原因と 3 つの対応方法
EC-CUBE をサーバにインストールして初期状態のサンプルサイトや管理画面をブラウザで表示した際に文字化けしていた場合に考えられる 3 つの原因と文字化けすることなく正常に日本語が表示されるようにする…