エラーの発生(バグ?)

Q:表示される画面が真っ白になります

A:おそらく何らかのエラーが発生しているものと思われます。
もし運営中のサイトであれば、一旦メンテナンス中にしてから、PHP のエラーを表示させるよう設定してください。
画面に表示されるエラーが問題解決のヒントになるでしょう。

エラー内容を表示させるようにするための設定

/includes/application_top.php の52行目のコメントアウトを外してください。

//define('STRICT_ERROR_REPORTING', true);

define('STRICT_ERROR_REPORTING', true);

のようにすればエラーが表示されるようになると思いますので、そのエラー内容を見て対処してください。
※サーバーによってはエラーが表示されないかもしれません。

これまでお問い合わせのあった事例としては、 metatags.php ファイルを変更した際に、シングルコーテーションの閉じタグを削除してしまっていたり、文字コードを Shift-JIS などのUTF-8 以外で保存してしまったケースが多くみられます。


Q:The SQL cache directory does not exist..

A:ZenCart?は高速化を図るためにSQLのクエリのキャッシュを使用します。そのためにクエリをキャッシュしておくためのディレクトリが必要になります。

初期設定では/tmpに設定されています。(configure.phpを設定することで変更出来ます)このディレクトリは書き込み可能な状態で存在しなければいけませんが、もしそれがうまくいっていないと上記のようなエラーメッセージが出ます。プログラムは動作しますが、SQLのクエリはキャッシュされません。

もしクエリのキャッシュ機能を利用することを希望せず。エラーメッセージを消したい場合はincludes/application_top.phpのファイルにおいて設定することが出来ます。

ファイルの終わり近くで以下のような記述があります。

    define('WARN_SQL_CACHE_DIRECTORY_NOT_WRITEABLE', 'true');

これを以下のように書き換えて下さい。

    define('WARN_SQL_CACHE_DIRECTORY_NOT_WRITEABLE', 'false');

 

Q:Warning Headers already sent...

A:このエラーメッセージはphpのファイルの後ろに半角スペース、または余計な空白行が存在すること等により引き起こされます。エラーが表示されたファイルをチェックして、?>の後についている空白を削除するなどの対処を行ってください。

 

Q:Parse error: unexpected T_STRING  (…のようなエラー)

A:もし、以下のような感じのエラーが表示されているとすると・・・

"Parse error: parse error, unexpected T_STRING in /var/www/myaccount/public_html/includes/languages/japanese/SOMETHING.php on line 28"

大抵の場合は、記述されている言語ファイルの定義の中にある  ' マーク(シングルクォートやアポストロフィ)を ¥ でエスケープしていない場合に発生します。

例えば:

define('TEXT_SOMETHING','This is something simple that's used as an example');

のように、 that's のアポストロフィを ¥' のように処理する必要があります。
こうした記述ミスがないか確認して修正してください。

 

Q: Connection to Database failed ... Access denied for user: 'username@localhost' (Using password: YES) ・・・ というエラーになってインストールできません!

A:入力情報が間違っているか、ユーザーに権限がありません。

詳細は、こちらの記事を参照ください>>

 

Q:  1142 DROP command denied to user: 'username@localhost' ... DROP TABLE IF EXISTS ・・・というエラーになってインストールできません。

A: このユーザーにデータベースに対する必要な権限があるかどうかを確認してください。

詳細は、こちらの記事を参照ください>>

 


Q:ページの中に、TEXT_MAIN  のような訳の分からない大文字の英文字が表示されます。

まずはじめに:
TEXT_MAINENTRY_STATE_TEXT  あるいは、SOMETHING_LOOKING_LIKE_THIS のような大文字の英単語を連結した文字列は、PHP で“定数”と呼ばれているものです。
この“定数”には代入されるべき文字列を別途 "define" で定義してやる必要があります。
これは、Zen Cart Pro ( Zencart )が、多言語対応するために取っている手法です。

例えば日本語の言語ファイルを確認すると、以下のような形の言語定義フォームがあるのにお気づきでしょう。

define('TEXT_MAIN', 'この言葉を表示');

このように定義する事で、「TEXT_MAIN」 の部分には「この言葉が表示」という文字列がページ上に表示されるようになります。

さて、テンプレートファイルやシステム上のどこかのファイルに、TEXT_MAIN ... の内容をページに表示するためのリクエストが記述されているはずです。( 大抵は、PHP の "echo" で記述されています )
それなのに、この TEXT_MAIN 定数に対応する内容がどこにも定義されていない場合や、定義を記述しているファイルが構文エラーを起こして読み込む事が出来ない場合などに、定義された文字列を表示する事ができず、代わりに“定数”がそのまま表示される事になってしまいます。

正しく定義が行われるべき場所を捜し出して、修正を行う必要があります。

考えられる主な発生原因:
ケース1:
こうした事が発生するケースの一番の原因は、ある文字列を表示させたくないと思って言語ファイルを修正する時に、表示されている文字列の部分だけを削除すべきところを、定義すべてを削除してしまったというケースです。

例えば、対応する日本語文字列を消したい場合は…

define('TEXT_MAIN', '');

のように日本語の定義部分の文字列を空にするのが正しい形です。
その行をすべて消してはいけません!

ケース2:
その他のケースとしては、定義を記述しているファイルにおいて、読み込めなくなった定義よりも上にある定義で、コーテーションマークの処理が間違っていたり、行の最後の ; が抜けているといった構文エラーが発生している場合もあります。

ケース3:
また、単なる言語ファイルのアップロード忘れ、も原因として考えられます。

※まずは、問題が発生する前にどのファイルを編集したか、何か追加モジュールなどをインストールしなかったかを考えて、元々の Zen Cart Pro (あるいは Zen Cart)のソースファイルと比べてみるところから始めてください。
 

Q:「郵便番号データ管理」で「初期データの取得」を行おうとしたら、画面が真っ白になってしまいました。

A:FTPソフトを使って アドミン用のディレクトリ内にある /postal ディレクトリの中を確認してください。
圧縮ファイルが一つだけ(もしくは「初期データ取得」リンクをクリックした数だけ)入っているでしょうか。
その場合、データ取得後に圧縮ファイルを解凍してDBにインストールできなかったものと思われます。
サーバー管理者様に、解凍ソフトがサーバーにインストールされているかどうかをご確認していただき、入っていないようであればインストールをご依頼ください。

※注意: 再度「初期データ取得」をお試しになる前に、必ず /postal ディレクトリ内の圧縮ファイルをすべて空にしておいてください。
ファイルが残っていると、そのファイルの処理がスキップされるため、その部分の郵便番号データがDBに反映されなくなります。

 

Q: Zen Cart Pro が表示されません! 管理画面も入れません! 
「0 DB_ERROR_NOT_CONNECTED」とだけ表示されます。どうなってしまったのでしょう?

A:「0 DB_ERROR_NOT_CONNECTED」のエラーは、MySQLデータベースに接続できない場合に表示されるエラーメッセージです。
ファイルの変更などをしていないにも関わらず、このメッセージが急に表示される場合は、何らかの原因でサーバーの負荷(MySQLへの負荷)が高くなり接続できない状態になってしまったのかもしれません。

ただ、あわててサーバー業者に連絡する前に、本当に設定が間違っていないか再確認しましょう。
Zen Cart Pro からデータベースに接続するにあたって、/includes/configure.phpファイル定義されている接続情報を利用します。
この設定内容でデータベースにアクセスしても反応がない場合には、「0 DB_ERROR_NOT_CONNECTED」エラーが表示されます。

 

以下の内容をチェックしてみてください。
1. configure.phpファイルに記述されている情報は正しいか。
2. configure.phpファイルで指定されたデータベース名は正しいか。
3. configure.phpファイルで指定されたユーザ名は正しく、configure.phpファイルで指定されたデータベースへのアクセス権限を持っているか。
これらが間違っていないようであれば・・・
4. サーバーのホスティング業者がデータベースでメインテナンスなどをしていないかを確認してください。
5. 「ウェブサイトがMySQLデータベースに接続できない」状況をホスティング会社に伝えて対応を依頼します。
6. 合わせてホスティング業者にデータベースの「修理」オプションがあるかどうかを確認してください。

 

Q: きちんとしたSSL証明書を持っているのに、「セキュリティ情報-このページにはセキュリティで保護されている項目と保護されていない項目があります…」という警告が出てしまいます。

A:これは、ご利用のテンプレート内に相対パスではなく、  http://xxxxxxxxx   のような形で直接リンクを書きこんでしまっている場合に発生します。

もしくは、バナーの設定で、 http:// で始まるリンクを使ったバナーを登録しており、「SSLページでのバナー表示」を無効にしてスキップさせていないのかもしれません。
あるいは、クリック追跡ツールなどを Javascript でサイト内に設置しており、それがどこかの http:// ページにリンクしているのかもしれません。

ほとんどの“容疑者”は、ブラウザで「ソースを表示」させて、src="http:// を検索すれば、見つけ出すことができるでしょう。

容疑者が見つかったら、テンプレートファイル内のそれらの直書きリンクを削除してください。もしそれらのリンク先がSSLで表示可能であれば、https:// に書き直すことで警告表示は発生しなくなります。

もし、クリック追跡ツールのスクリプトが問題の原因である場合、リンクを https:// に書き直すか、別のスクリプトを準備してもらうようツールの提供者にご相談ください。

基本的に言って、テンプレート内だけではなくどんなページにおいても、http:// のURLを直書きすべきではないでしょう。
特に <IMG SRC=...> や <SCRIPT SRC=...> などのタグを利用する場合には注意してください。

 

:注文管理画面の「価格(税込)」に税込価格が表示されません!

A:管理画面から以下の設定をご確認ください。
「一般設定」>「ショップ全般の設定」 より、真ん中辺りに、「価格を税込みで表示 - 管理画面」の項目があります。
おそらくこちらが false になっているものと思われます。 True に変更して表示をご確認ください。

 

Q: サイト内の商品ページでも管理ページでも、日付の部分が「8月%d日」のように文字化けしています。

A:Windows環境でご利用でしょうか?
以下の修正をお試しください。

/includes/languages/japanese.php内の
define('DATE_FORMAT_LONG', '%Y年%m月%d日(%a)'); // this is used for strftime()

define('DATE_FORMAT_LONG', '%Y年%m月 %d日(%a)'); // this is used for strftime()

に書き換えてみてください

※%d日の前に半角スペースを入れただけです。 
 

Q: 「カテゴリ・商品 CSV入出力」で、ダウンロードしたデータがどれも空っぽです。

A:ダウンロード自体はできるが、0バイトの空ファイルになってしまうという事ですね。

FTPでサーバーに接続し、ZenCartProインストールディレクトリにある /chache ディレクトリに対して書き込み権限を与えてください。 ( 777など )

Q: CSV出力で、文字化けが発生します。

A:管理画面用のプログラムのどこかに誤った文字コードのファイルが存在している可能性があります。

管理画面の表示言語を「mobile」などに変更してお試しください。
もし、現象が発生しないようであれば、日本語用の言語ファイルに問題があります。
これまでに発生したパタンでは、includes/languages/japanese/meta_tags.php を間違った文字コードで上書きしているケースなどがありました。
※ ファイルの変更時には、 UFT-8 ではなく UTF-8N で保存するようにご注意ください。