30
Zen Cartでカテゴリ名とカテゴリ画像を変更したら、
“そのカテゴリを選ぶと真っ白な画面に遷移してそのまま”という状態に陥ってしまった。
(他のカテゴリや商品詳細は問題なく表示される)
[spoiler]真っ白な画面は、HTMLが全く出力されておらず、ソースを表示しても空っぽ。
せめてエラーが表示されれば改善の方向性も目途が付くのだが、この状況はお手上げに近い。
データベース登録時におかしな事になったのかと適当に推測し、しらみつぶしにphpMyAdminを使ってcategoriesやproductsテーブルを精査するも、特に変わったところなし。
「こりゃPHPかな」と思い、HTML出力前部分のphpファイルにvar_dump(変数名);を埋め込みつつ、ちまちま変数の値をチェックするも解決の糸口にならず。
でも、よくよく調べていくと「PHPがエラーが表示されない設定になっているだけ」という事に気づく。
エラー発生時に物理アドレスなどを晒すと、セキュリティ上よろしくないので、普通のレンタルサーバではphp.iniでエラーを表示しない設定になってるらしい。
ただ、php.iniの設定を変えてApachの再起動などは、レンタルサーバでは不可能だ。
んじゃってことで、最初に読み込まれるファイルにエラー表示する関数を入れてあげることに。
ZenCartのルートフォルダ/includes/modules/pages/index/header_php.phpファイルを開き、最初の<?phpの直下に
を挿入してアップロード。
これで、エラー停止時にエラーメッセージが表示されるようになった。
その後はエラー原因も特定でき、無事に稼動するようになった。
・・・で、結局何が原因だったかと言うと、
追加したサイドボックスモジュールのlanguageファイルについて、日本語化して保存するときにどうやらshift-jisで保存するというショボいミスのせいだった。
単純に文字化けするだけならいいが、微妙にphpコードっぽく文字化けした場合がこうなってしまって痛い。
【教訓】
日本語を入力したファイルは、ちゃんとUTF-8・DOMなしで保存しましょう。[/spoiler]