EC-CUBE4でディレクトリ配置を変更してみる

EC-CUBE EC-CUBE
自己流です。
プログラムが動かなくなる可能性がありますので、自己責任でお願いいたします。

普通にEC-CUBEをインストールをすると下のようなディレクトリ配置になると思います。
(ディレクトリ構成の図はここから引用)
これを…

[public_html/]
  │
  ├──[app/]
  │   ├──[Plugin/]
  │   ├──[PluginData/]
  │   ├──[proxy/]
  │   └──[template/]
  ├──[html/]
  ├──[var/]
  ├──[vendor/]
  ├──[composer.json]
  └──[composer.lock]

EC-CUBE本体を1つ上の階層の違うディレクトリに移動したい。
([.env.dist]と[.env.install]は、[eccube/]配下か[public_html/]配下かどっちだっけかな…汗)

[root_dir/]
  │
  ├──[public_html/]←ここを通常の[html/]扱い(画像などを配置)
  │   │
  │   └[composer.json][composer.lock][.env.dist][.env.install]以外のファイルを配置
  │
  └──[eccube/]←ディレクトリ名はなんでもいいが[eccube/]で作成
      │
      ├──[app/]
      │   ├──[Plugin/]
      │   ├──[PluginData/]
      │   ├──[proxy/]
      │   └──[template/]
      ├──[var/]
      ├──[vendor/]
      ├──[composer.json]
      └──[composer.lock]

ちょっとパス変更すればすぐに出来るやろ?と思ってた時期が私にもありました。
意外とググっても出てこなかったので備忘録を兼ねて残しておきます。

まずは「public_html/index.php」の13行目付近のautoload.phpへのパスを変更。

// $autoload = __DIR__.'/vendor/autoload.php';
$autoload = __DIR__.'/../eccube/vendor/autoload.php';

次は「eccube/composer.json」の177行目付近と181行目付近を変更。
(177行目はsymfony-web-dirだから変更しなくてもいいのかな…?)

    "extra": {
        "symfony": {
            "id": "01C0Q71D54BCVSB8ZWR3VECDRD",
            "allow-contrib": false
        },
        "symfony-web-dir": "../public_html",
        "bin-dir": "bin",
        "src-dir": "src/Eccube",
        "config-dir": "app/config/eccube",
        "public-dir": "../public_html"
    },

3つ目のファイルは「eccube/app/config/eccube/packages/eccube.yaml」の36,37,41,42行目のパスを変更。

    eccube_html_dir: '%kernel.project_dir%/../public_html'
    eccube_html_plugin_dir: '%kernel.project_dir%/../public_html/plugin'

    eccube_save_image_dir: '%kernel.project_dir%/../public_html/upload/save_image'
    eccube_temp_image_dir: '%kernel.project_dir%/../public_html/upload/temp_image'

4つ目のファイルは「eccube/app/config/eccube/packages/framework.yaml」のassets(画像など)へのパスを変更。
public_htmlがwebのrootになるので、/htmlを削除。

    assets:
      base_path: '/template/%eccube.theme%'
      packages:
        admin:
          base_path: '/template/admin'
        save_image:
          base_path: '/upload/save_image'
        plugin:
          base_path: '/plugin'
        install:
          base_path: '/template/install'
        temp_image:
          base_path: '/upload/temp_image'
        user_data:
          base_path: '/user_data'

と、ここまで書いて下書きで約5ヶ月放置…
そら忘れるわ…
これで設定は終わりかと思いますが、何か設定忘れがあれば追記します。
すみません…

あ、ちなみにこの変更後にcronなどでCommandなどを実行したい場合、「/eccube」の下にもDB設定のファイル(.env)を置いておかないとエラーで動かなくなります。
「/eccube/.env」を削除したばっかりについさっきまで動いていたプログラムが動かなくなって、原因がわかるまで1日無駄にしましたw

最後になりますがもう一度。
ディレクトリ変更はEC-CUBE側では想定していないでしょうから、やるときは自己責任でお願いいたします。

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