Oxid 7: Fehlende Module / Missing Modules

Hallo zusammen,

für einen Relaunch eines Shops war der Plan auf OXID 7 EE überzugehen.
Nach der erfolgreichen Composer Installation und Installation auf dem Server, musste ich leider feststellen das der modules/ Folder im Shop Root völlig leer ist und nur die functions php file beinhaltet (War in der 6.5 nicht der Fall).

Die Module sind zwar durch die .yaml File im Backend ersichtlich, jedoch fehlen sämtliche Module Files (VCMS etc.) im Module Folder.

Ist jemandem dieses Problem bekannt?

Vielen Dank für eure Hilfe!

Moin @bigginc :nerd_face:

herzlich Willkommen im Forum.

Dies hat seine Richtigkeit.

Für die Professionalität bei der Modulentwicklung verschwindet das source/modules Verzeichnis und wird nur noch für Entwicklungszwecke verwendet.

Module wandern wie bei Composer gedacht komplett ins vendor Verzeichnis.

Dies bedeutet man legt für jedes seiner Module ein eigenes Repository an.

Seine Module macht man dann über die composer.json bekannt.

Meine ersten Erfahrungen mit einem Update habe ich unter OXID 7: Update-Revolution oder mühsamer Umstieg? | BisWeb E-Commerce Lösungen zusammen gefasst.

Wünsche Dir ein schönes Wochenende :sunny:

Viele Grüße aus Silicon Seesen
Tim

1 Like

Hi Indianer,

vielen Dank für die schnelle Antwort.
Die Erklärung verstehe ich natürlich und macht Sinn.

Seit der OXID 7 Version werden jedoch im Backend bei sämtlichen Modulen falsche Pfade aufgerufen (was mein eigentliches Problem erklärt).
Bspw hier “” bei dem Logo der Mediathek. JS etc. und sämtliche anderen Files werden ebenso über die Serverpfade geladen. Die Config File ist korrekt eingerichtet und sämtliche Pfade und URLs stimmen.

Hast du evtl. eine Idee?

Vielen Dank und einen schönen Abend :slight_smile: ,
Biggi

1 Like

Klingt für mich, als würde was von der Serverkonfiguration nicht passen. Einfach mal versuchen, eine PHP-Datei mit phpinfo() im Browser aufzurufen.

Dies liest sich so als ob die Module noch nicht für die neue Assets Struktur aufbereitet sind. Mehr Infos unter Updating modules — OXID eShop developer documentation 7.1 documentation und File and folder structure — OXID eShop developer documentation 7.1 documentation

Das sollte aber nicht bei Modulen, die der Shop mitliefert, passieren.

Leider nein. Betrifft auch die vorinstallierten Module.

Heute konnte ich Problem von @bigginc nach vollziehen in 7.1er Serie.

Das Problem der Linkaufbau des Assets Verzeichnisses des Moduls.

Dort soll im Code über ein String Replace der Pfad mit der Shop-URL ersetzt werden.

Dies findet aber in Umgebungen mit Symlinks nicht statt, weil Angabe in config.inc.php nicht mit Release Verzeichnis übereinstimmt wenn z.B. Deployer zum Einsatz kommt.

Über die Überladung von ViewConfig Klasse mit der Methode getModulPath habe für mich Workaround gefunden.

Du meinst $this->sShopDir verweist auf einen Symlink?

Könntest du deinen Lösungsansatz bitte mal teilen?
Zum Glück konntest du es ebenso reproduzieren.
Ich hatte das Problem ebenfalls in der 7.0.3 Version.

Meine Umgebung hat keinerlei Symlinks, da das Deployment noch nicht zum Einsatz kommt.

Vielen Dank für eure Hilfe!

Ja, zur Erklärung bei einem Deployment mit Deployer.org gibt es ein Releaseverzeichnis z.B.

releases/xy/source/out/...

und auf das aktuelle Releaseverzeichnis zeigt ein Symlink mit

current/source/out/...

und in der config.inc.php in der Variable $this->sShopDir steht

current/source/

Die Ersetzung von current/source/ mit der Shop-URL schlägt fehl, weil die Methode getModulePath liefert releases/xy.

Die Lösung ist noch nicht abschließend getestet und stellt bisher einen Workaround dar.

Im Prinzip überlade ich die ViewConf die Methode getModulePath und stelle sicher das Shop-Dir zu dem hinterlegten Wert in der config.inc.php passt.

Dies sehr individuell je nach Shop und keine allgemeingültige Lösung.

Besser wäre, wenn OXID eSales dort sicherstellt, dass auch Symlinks funktionieren für eine Deployment Umgebung.

Dann könnte der fehlende Symlink in Deinem Fall das Problem sein, weil vom vendor Verzeichnis der vorinstallierten Module wird ein Symlink in das source Verzeichnis für die Assets erstellt.

Wenn der Symlink fehlt, kann dies eine weitere Ursache sein warum es in Deinem Fall nicht funktioniert.

Dies müsstest prüfen ob es bei Dir einen Symlink nach source/out/modules müsste dies glaube sein existiert.

Das sollte auch ohne Modul funktionieren, wenn man in der config.inc.php mit relapath() arbeitet.

Also bspw. so:

$this->sShopDir = realpath( __ DIR __ . ‘/current/source’);
$this->sCompileDir = realpath( __ DIR __ . ‘/current/source/tmp’);

2 Likes