# Updatesichere Composer Installation

**URL:** <https://forum.shopware.com/t/updatesichere-composer-installation/44705>\
**Category:** Allgemein\
**Created:** [22. März 2017 um 07:20 UTC](https://forum.shopware.com/t/updatesichere-composer-installation/44705 "2017-03-22T07:20:06Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![megadruck](https://avatars.discourse-cdn.com/v4/letter/m/f17d59/32.png) [@megadruck](https://forum.shopware.com/u/megadruck)\
**Post date:** [22. März 2017 um 07:20 UTC](https://forum.shopware.com/t/updatesichere-composer-installation/44705/1 "2017-03-22T07:20:06Z")

</div>

Moin liebe Shopware Gemeinde,

ich habe via composer install ein Modul installiert, das ich für mein Plugin benötige. Allerdings wird dies bei jedem Update von Shopware überschrieben, so dass ich dies danach jedesmal neu einbinden muss.

&nbsp;

Wie sieht die Integration im Composer aus, damit Shopware dies beim Update nicht überschreibt ?

---

<div class="post-metadata">

**Author:** ![Argee](https://avatars.discourse-cdn.com/v4/letter/a/e9c0ed/32.png) [@Argee](https://forum.shopware.com/u/Argee)\
**Post date:** [23. März 2017 um 14:10 UTC](https://forum.shopware.com/t/updatesichere-composer-installation/44705/2 "2017-03-23T14:10:00Z")

</div>

Push, weil ich genau das gleiche Problem habe ![Wearing-Sunglasses](https://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/wearing-sunglasses.png "Wearing-Sunglasses")

Habe drüber nachgedacht, ob man über die install-Methode des plugins nicht über phps „shell\_exec“ composer ausführen könnte. Könnte das funktionieren?

---

<div class="post-metadata">

**Author:** ![hsoebbing](https://avatars.discourse-cdn.com/v4/letter/h/898d66/32.png) [@hsoebbing](https://forum.shopware.com/u/hsoebbing)\
**Post date:** [23. März 2017 um 14:33 UTC](https://forum.shopware.com/t/updatesichere-composer-installation/44705/3 "2017-03-23T14:33:46Z")

</div>

Hast Du schon mal versucht in Deinem Plugin eine eigent composer.json-Datei anzulegen? Damit kannst Du dann die Dependencies Deines Plugins komplett separat von Shopware verwalten.

---

<div class="post-metadata">

**Author:** ![Argee](https://avatars.discourse-cdn.com/v4/letter/a/e9c0ed/32.png) [@Argee](https://forum.shopware.com/u/Argee)\
**Post date:** [23. März 2017 um 14:43 UTC](https://forum.shopware.com/t/updatesichere-composer-installation/44705/4 "2017-03-23T14:43:14Z")

</div>

reicht das aus? die eigentlichen&nbsp;dateien, die ausgeführt werden, fehlen dann doch immer noch; oder nicht?

---

<div class="post-metadata">

**Author:** ![megadruck](https://avatars.discourse-cdn.com/v4/letter/m/f17d59/32.png) [@megadruck](https://forum.shopware.com/u/megadruck)\
**Post date:** [23. März 2017 um 14:43 UTC](https://forum.shopware.com/t/updatesichere-composer-installation/44705/5 "2017-03-23T14:43:47Z")

</div>

Gibts irgendwo von Shopware ne Anleitung wie das strukturell aufgebaut sein muss ?

Wo man die vendor Files und die composer.json ablegen muss, damit dies autom. eingebunden werden ?

---

<div class="post-metadata">

**Author:** ![Moritz\_Naczenski](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/moritz_naczenski/32/7792_2.png) [@Moritz\_Naczenski](https://forum.shopware.com/u/Moritz_Naczenski)\
**Post date:** [23. März 2017 um 14:44 UTC](https://forum.shopware.com/t/updatesichere-composer-installation/44705/6 "2017-03-23T14:44:39Z")

</div>

Schau dir das doch mal beim Profiler an:&nbsp;[https://github.com/shyim/shopware-profiler](https://github.com/shyim/shopware-profiler)

Da funktioniert das auch einwandfrei.

---

<div class="post-metadata">

**Author:** ![hsoebbing](https://avatars.discourse-cdn.com/v4/letter/h/898d66/32.png) [@hsoebbing](https://forum.shopware.com/u/hsoebbing)\
**Post date:** [23. März 2017 um 14:46 UTC](https://forum.shopware.com/t/updatesichere-composer-installation/44705/7 "2017-03-23T14:46:54Z")

</div>

Das hängt etwas vom letztendliche Einsatzzweck ab.&nbsp;

Willst Du Dein Plugin an dritte Ausliefern musst Du vermutlich die .lock und das ganze vendor-Verzeichnis mitliefern. Wenn Du ein “privates” Plugin hast könnte es reichen die .lock Datei zu deployen und nur ein install auszuführen.

---

<div class="post-metadata">

**Author:** ![megadruck](https://avatars.discourse-cdn.com/v4/letter/m/f17d59/32.png) [@megadruck](https://forum.shopware.com/u/megadruck)\
**Post date:** [23. März 2017 um 14:51 UTC](https://forum.shopware.com/t/updatesichere-composer-installation/44705/8 "2017-03-23T14:51:19Z")

</div>

Nehmen wir mal dieses als Beispiel hier:

> **[picqer/php-barcode-generator](https://github.com/picqer/php-barcode-generator)**
>
> Barcode generator in PHP that is easy to use, non-bloated and framework independent.

&nbsp;

reicht es da nicht einfach die composer.json [php-barcode-generator/composer.json at master · picqer/php-barcode-generator · GitHub](https://github.com/picqer/php-barcode-generator/blob/master/composer.json)

abzulegen ?

---

<div class="post-metadata">

**Author:** ![hsoebbing](https://avatars.discourse-cdn.com/v4/letter/h/898d66/32.png) [@hsoebbing](https://forum.shopware.com/u/hsoebbing)\
**Post date:** [23. März 2017 um 23:17 UTC](https://forum.shopware.com/t/updatesichere-composer-installation/44705/9 "2017-03-23T23:17:57Z")

</div>

Die composer.json des barcode Generators beschreibt nur welche Pakete dieser Generator benötigt. Wenn Du den Generator in Deinem Plugin brauchst, dann musst Du das Github Repo in der composer.json DEINES Plugins angeben (die genaue Syntax ist nicht so spannend, ein&nbsp;_composer require picqer/php-barcode-generator_ reicht im Verzeichnis Deines Plugins wenn dort eine composer.json existiert (wenn nicht, dann einfach eine erzeugen mit _composer init_).

---

<div class="post-metadata">

**Author:** ![megadruck](https://avatars.discourse-cdn.com/v4/letter/m/f17d59/32.png) [@megadruck](https://forum.shopware.com/u/megadruck)\
**Post date:** [31. März 2017 um 12:21 UTC](https://forum.shopware.com/t/updatesichere-composer-installation/44705/10 "2017-03-31T12:21:46Z")

</div>

Du hast mir sehr gut geholfen. Ich habe es hinbekommen 🙂

---

<div class="post-metadata">

**Author:** ![mowlwurf](https://avatars.discourse-cdn.com/v4/letter/m/77aa72/32.png) [@mowlwurf](https://forum.shopware.com/u/mowlwurf)\
**Post date:** [14. April 2017 um 16:33 UTC](https://forum.shopware.com/t/updatesichere-composer-installation/44705/11 "2017-04-14T16:33:14Z")

</div>

> [@Argee schrieb:](https://forum.shopware.com/profile/25914/Argee "Argee")
> 
> Push, weil ich genau das gleiche Problem habe ![Wearing-Sunglasses](https://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/wearing-sunglasses.png "Wearing-Sunglasses")
> 
> Habe drüber nachgedacht, ob man über die install-Methode des plugins nicht über phps „shell\_exec“ composer ausführen könnte. Könnte das funktionieren?

Habe ich probiert, geht wenn man die Plugin-Installation über die cli ausführt, also mit **sw:plugin:install PluginName**. Dafür reicht ein einfaches&nbsp;

**exec(sprintf(‚composer require %s %s‘, $dependencyName, $dependencyVersion));**&nbsp;in der install Funktion der Plugin Bootstrap.

Über den Plugin-Manager im Backend, funktioniert es leider **nicht** , selbst wenn man die php binary mit der cli php.ini verwendet, wie folgt

**exec(sprintf(‚/usr/bin/php -c /etc/php/7.0/cli/php.ini composer.phar require %s %s --no-interaction --optimize-autoload‘, $dependencyName, $dependencyVersion));**

Man sollte dabei bedenken, dass man sich bei Ausführung der Installation über den Plugin-Manager im Shopware-Hauptverzeichnis befindet. D.h. möchte man die vendor files in seinem Plugin Verzeichnis liegen haben, wie bei der von _@hsoebbing_ beschrieben Lösung,&nbsp;muss man beim exec vorher noch ein „cd custom/plugins/PluginName &&“&nbsp;einfügen (bzw. das pre 5.2 Plugin Verzeichnis).&nbsp;

Also&nbsp;**exec(sprintf(‚cd custom/plugins/PluginName && composer require %s %s‘, $dependencyName, $dependencyVersion));**

**Vorteil: Die eigenen dependencies laufen getrennt von den von Shopware und werden bei einem Shopware Update nicht aus der composer.json entfernt**

**Nachteil: Es lädt auch die dependencies erneut herunter die eigentlich schon von Shopware geladen wurden =\> Overhead**

Falls jemand die Lösung dafür kennt wie man das composer require erfolgreich während der Plugin Installation über den Plugin-Manager im Backend laufen lassen kann, wäre ich sehr erfreut diese zu lesen.&nbsp; ![Smile](https://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/smile.png "Smile")
