エラーの解決方法をメモする。
- ローカル環境構築関連
- WARNING [cache] Failed to save key
- No composer.json present in the current directory, this may be the cause of the following exception.
- Unable to replace alias “session.handler” with actual definition “session.handler.memcached”
- You have requested a non-existent parameter “kernel.secret”. Did you mean this: “kernel.charset”?
- Place “2” is not valid for workflow “order”.
ローカル環境構築関連
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