【EC-CUBE4】エラーリスト

スポンサーリンク
スポンサーリンク

エラーの解決方法をメモする。

スポンサーリンク

ローカル環境構築関連

WARNING [cache] Failed to save key

事象1:DockerでカスタマイズしたCommand実行で発生した

事象2:AWSとソニーペイメントプラグインを使用していて、cron実行で発生した

原因:AWSのELBを挟んだ場合、REMOTE_ADDRで正しいIPが取得できない

プロジェクト名/app/Plugin/SlnPayment4/Service/Utill.php

修正前ソース

    public function GetLogInfo()
    {        
        $msg = '[{' . $_SERVER['SCRIPT_NAME'] . '}';
        
        $msg .= 'from {' . $_SERVER['REMOTE_ADDR'] . "}\n";
         ・
         ・
         ・

修正後ソース

    public function GetLogInfo()
    {        
        $msg = '[{' . $_SERVER['SCRIPT_NAME'] . '}';

        if(isset($_SERVER['REMOTE_ADDR'])){
            $msg .= 'from {' . $_SERVER['REMOTE_ADDR'] . "}\n";
        } elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
            // aws_cron対応
            $msg .= 'from {' . $_SERVER['HTTP_X_FORWARDED_FOR'] . "}\n";
        } else {
            // ローカル対応
            $msg .= 'from {' . '['.'localhost'.']' ."\t" . "}\n";
        }

ELB + K8S環境でingress-nginxを通した場合

$_SERVER['HTTP_X_ORIGINAL_FORWARDED_FOR']

参考サイト:https://uiuifree.com/blog/develop/php-elb-ip-address/

No composer.json present in the current directory, this may be the cause of the following exception.

事象:「docker-compose up -d」コマンド実行で発生

原因:composerのバージョンが対応していないのでエラーみたいです。

ファイル名:プロジェクト名/Dockerfile

修正後ソース

RUN curl -sS https://getcomposer.org/installer \
  | php \
  && mv composer.phar /usr/bin/composer \
  && composer selfupdate --1 \ ←これ!!!
  && composer config -g repos.packagist composer https://packagist.jp \
  && composer global require hirak/prestissimo \
  && chown www-data:www-data /var/www \
  && mkdir -p ${APACHE_DOCUMENT_ROOT}/var \
  && chown -R www-data:www-data ${APACHE_DOCUMENT_ROOT} \
  && find ${APACHE_DOCUMENT_ROOT} -type d -print0 \
  | xargs -0 chmod g+s \
  ;

Unable to replace alias “session.handler” with actual definition “session.handler.memcached”

事象:サーバーからPULLしたソースでローカル環境構築

原因:handler_idの設定値が正しくない(古い?)

ファイル名:プロジェクト名/app/config/eccube/packages/framework.yaml

修正後ファイル

framework:
    secret: '%env(ECCUBE_AUTH_MAGIC)%'
    default_locale: '%locale%'
    translator:
      fallback: ['%locale%']
    csrf_protection: { enabled: true }
    http_method_override: true
    trusted_hosts: ~
    # https://symfony.com/doc/current/reference/configuration/framework.html#handler-id
    session:
        # ↓ handler_id: session.handler.memcached ↓
        handler_id: 'Eccube\Session\Storage\Handler\SameSiteNoneCompatSessionHandler'
        save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%'
        name: '%env(ECCUBE_COOKIE_NAME)%'
        cookie_lifetime: '%env(ECCUBE_COOKIE_LIFETIME)%'
        gc_maxlifetime: '%env(ECCUBE_GC_MAXLIFETIME)%'
        cookie_httponly: true

You have requested a non-existent parameter “kernel.secret”. Did you mean this: “kernel.charset”?

事象:サーバーからプルしたものをローカルで立ち上げようとしたら、発生したエラー

原因:パラメータが定義されているframework.yamlファイルがない

ファイル名:プロジェクト名/app/config/eccube/packages/framework.yaml

作成ファイル

framework:
    secret: '%env(ECCUBE_AUTH_MAGIC)%'
    default_locale: '%locale%'
    translator:
      fallback: ['%locale%']
    csrf_protection: { enabled: true }
    http_method_override: true
    trusted_hosts: ~
    # https://symfony.com/doc/current/reference/configuration/framework.html#handler-id
    session:
        handler_id: 'Eccube\Session\Storage\Handler\SameSiteNoneCompatSessionHandler'
        save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%'
        name: '%env(ECCUBE_COOKIE_NAME)%'
        cookie_lifetime: '%env(ECCUBE_COOKIE_LIFETIME)%'
        gc_maxlifetime: '%env(ECCUBE_GC_MAXLIFETIME)%'
        cookie_httponly: true

    # When using the HTTP Cache, ESI allows to render page fragments separately
    # and with different cache configurations for each fragment
    # https://symfony.com/doc/current/book/http_cache.html#edge-side-includes
    esi: { enabled: true }
    fragments: { enabled: true }
    php_errors:
        log: true
    assets:
      base_path: '/html/template/%eccube.theme%'
      packages:
        admin:
          base_path: '/html/template/admin'
        save_image:
          base_path: '/html/upload/save_image'
        plugin:
          base_path: '/html/plugin'
        install:
          base_path: '/html/template/install'
        temp_image:
          base_path: '/html/upload/temp_image'
        user_data:
          base_path: '/html/user_data'
        # json_manifest_path: '%kernel.project_dir%/public/build/manifest.json'
    cache:
        # this value is used as part of the "namespace" generated for the cache item keys
        # to avoid collisions when multiple apps share the same cache backend (e.g. a Redis server)
        # See https://symfony.com/doc/current/reference/configuration/framework.html#prefix-seed
        prefix_seed: ec-cube
    # The 'ide' option turns all of the file paths in an exception page
    # into clickable links that open the given file using your favorite IDE.
    # When 'ide' is set to null the file is opened in your web browser.
    # See https://symfony.com/doc/current/reference/configuration/framework.html#ide
    ide: ~
    validation: { enable_annotations: true }
    templating: { engines: ['twig'] }

参考サイト

https://github.com/EC-CUBE/ec-cube/blob/4.0.5/app/config/eccube/packages/framework.yaml#L2

Place “2” is not valid for workflow “order”.

事象:注文ステータス追加で発生

原因:ステータス遷移の制御設定が必要

ファイル名:プロジェクト名/app/config/packages/order_state_machine.php

タイトルとURLをコピーしました