メモ > 技術 > CMS: ECCube > トラブル
トラブル
■プログラムに異常は見当たらないのにエラーになる
管理画面の「コンテンツ管理 → キャッシュ管理」からキャッシュを削除する。
以下のコマンドで削除することもできる。(むしろコマンドで削除する方が高速で、余計なデータも残らなくて良さそう。)
$ php bin/console cache:clear --no-warmup
■コンソールで「console list」を実行するとエラーになる
以下のように、コマンドの途中でエラーが表示される。
# php bin/console list
Symfony 3.4.42 (kernel: Eccube, env: dev, debug: true)
Usage:
command [options] [arguments]
Options:
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
-e, --env=ENV The Environment name. [default: "dev"]
--no-debug Switches off debug mode.
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
In getGeneratorService.php line 8:
Attempted to load class "Generator" from namespace "Eccube\Tests\Fixture".
Did you forget a "use" statement for e.g. "Symfony\Bundle\MakerBundle\Generator", "Sensio\Bundle\GeneratorBundle\Ge
nerator\Generator" or "Faker\Generator"?
list [--raw] [--format FORMAT] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|--env ENV] [--no-debug] [--] <command> [<namespace>]
公式パッケージ版ではtestsディレクトリが存在しないので、APP_ENVをdevにするとエラーになるらしい。
GitHub版から tests ディレクトリを取得して配置するか、app/config/eccube/packages/dev/generator.yaml を削除することで一応エラーは回避できる。
ただしそれなら、はじめからGitHub版を使っておくのが無難そう。
EC-CUBE4カスタマイズ - "bin/console"コマンドがエラーになる Attempted to load class "Generator" "Eccube\Tests\Fixture".
https://umebius.com/eccube/bin_console_error_attempted_to_load_class/
■データベースに接続できたりできなかったりする
データベースへの接続パスワードに「$」が含まれていたときの挙動が怪しい。
.env でパスワードをシングルクォートで囲えばいいかと思ったが、それでも接続エラーになることがある。
Symfonyの仕様かもしれないが詳細は不明。
ひとまず、データベースへの接続パスワードを変更して対応した。
■正しいログイン情報のはずなのに認証できない
別環境のデータベースを取り込んだ時に発生する。
.env の ECCUBE_AUTH_MAGIC が暗号化のキーとして使われているので、この値を合わせないと正しく複合化できない。
よってこの値を、取り込み元と同じ値にしておく必要がある。
EC-CUBE4データ移行:会員データ・管理者データ(MySQL) | ITOBEN STYLE Blog
https://itoben.com/blog/4277.html
■Twigファイルで日時を参照できない
日時を出力しようとすると致命的なエラーになることがある。
エラー内容はECCube設置ディレクトリ内の var/log/prod/site-2021-01-19.log などに出力されるので、確認すると
「Fatal Error: Object of class DateTime could not be converted to strin」
のようなエラーになっている。
日付の値は、文字列型に自動変換されないとのこと。
一例だが、以下のようにformatの指定を追加すると表示できるようになる。
必要に応じて、Entity内でformatの指定を行っておくこともできる。
Product.getProductCst().getTestDate()
↓
Product.getProductCst().getTestDate().format('Y-m-d')
【PHP】DateTime型の値を文字列(String)にする方法 - AppSeedのアプリ開発ブログ
https://develop.hateblo.jp/entry/php-datetime-string
■.env の値に「#」を使用できない
Symfony3.txt の「トラブル」を参照。
上記「データベースに接続できたりできなかったりする」も似たような問題だが、これはECCube独自の問題かもしれない。
■受注一覧からCSVをダウンロードできない
ECCubeの不具合。最新版では解消されているらしい。
商品・受注・顧客などのCSVダウンロードでメモリ不足エラー。 - Issue #4775 - EC-CUBE/ec-cube
https://github.com/EC-CUBE/ec-cube/issues/4775
CSV出力時にメモリを使い切ってしまう問題を修正 by chihiro-adachi - Pull Request #4815 - EC-CUBE/ec-cube
https://github.com/EC-CUBE/ec-cube/pull/4815
最終的に、以下の内容が本体に取り込まれているみたい。
ページングして取得するように修正 - EC-CUBE/ec-cube@0da7c07
https://github.com/EC-CUBE/ec-cube/commit/0da7c07755505ce96eaa2e279ec550dd84165c4f