メモ > 技術 > 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