Modul installieren V6.0 Composer lässt sich im Projektverzeichnis nicht aufrufen

Hallo
ich haber den Composer zuletzt 01/2018 für die shop installation benutzt.
habe aber jetzt das Problem das er für ein Modulupdate nicht reagiert.

ich habe in im root verzeichnis
mit :

/usr/bin/php7.1-cli composer.phar selfupdate

erfolgreich ubdaten können

in dem OXID-Projektverzeichnis also shop Ordner
in dem sich die Datei composer.json sowie die source- und vendor-Ordner befinden
bekomme ich beim Aufruf über putty:

/usr/bin/php7.1-cli composer.phar

die Meldung:
could not open input file

was mache ich falsch ?
gruss

Dies bedeutet, in Deinem OXID-Projektverzeichnis gibt es keine Datei composer.phar. Diese Datei liegt anscheinend im Root Verzeichnis Deines Servers.

Falls es möglich könntest Composer Global auf Deinen Server installieren Introduction - Composer
Dies hätte den Vorteil, dass Du als Befehl nur noch “composer” benötigst und nicht mehr den Pfad zur Datei composer.phar angeben musst.

danke @indianer3c

ich habe die composer.phar in das Projektverzeichnis kopiert und konnte sie dann auch im Projektverzeichnis aufrufen mit:
/usr/bin/php7.1-cli composer.phar

bei allen anderen Aktionen… update… Modul installieren bekomme ich einen Memory error

/usr/bin/php7.1-cli composer.phar require ecs/autoload

bekomme ich ein Cannot allocate memory

out of memory allocated 585113600 tried to allocate 37748736

für eine Lösung des Problems wär ich sehr dankbar

Gruss

Probier mal

/usr/bin/php7.1 -d memory_limit=-1 composer.phar

Damit ignoriert PHP das in der php.ini festgelegte memory limit und nimmt das Maximum, das dein Webspace erlaubt.

Dann bekomme ich diese Meldung:

Update frisst zwischen 1-4GiB Arbeitsspeicher. Das lassen viele Hoster nicht zu. Das einfachste wäre, du lädst die composer.json auf deinem Rechner, führst da composer update aus - nachdem du Composer global oder lokal installiert hast - und lädst dann die erzeugte composer.lock-Datei hoch.

Dann kannst du wieder composer install verwenden, weil die composer.lock eine Cache-Datei ist die nur ca. 700MiB Arbeitsspeicher braucht.

2 Likes

Danke… das werde ich probieren wenn es keine Möglichkeit gibt den composer auf 1und1 zu starten

Frage … Sollte ich den Composer in den jeweiligen Projektordner neu installieren?

ich beisse mir die Zähne aus den Composer global aus dem Projektordner mit absoluten Pfad aufzurufen. Auch 1und1 IONOS konte mir keine Auskunft geben.

Also für Windows gibt es den Composer Installer. Wenn du den installiert hast, solltest du in der Konsole einfach composer update nutzen können. Vorher musst du mit dem Terminal in den Projektordner navigieren: cd /pfad/zu/deinem/projekt.

Also:

cd  /pfad/zu/deinem/projekt
composer update

Dann sollte alles klappen. Manchmal ist es notwendig, dass die Konsole als Admin gestartet wird. Du könntest Composer auch in den jeweiligen Projektordner installieren als composer.phar aber das macht nur für ein/zwei Projekte Sinn.

@Pratoline: Ich war in einer ähnlichen Situation. Der Provider hatte den SSH-Zugang sehr restriktiv konfiguriert. Er hatte die Nutzung von composer zwar nicht ausgeschlossen, aber auch nicht vorgesehen. Daher war ein vernünftiges arbeiten faktisch nicht möglich.

Du schaffst in Deinem Account maximal /usr/bin/php7.1-cli composer.phar install. Das braucht nicht so viel Speicher, wie alle update-Prozesse, die Du gerade versuchst.

Das heißt Du müsstest in Zukunft Deine composer.lock immer auf einem anderen Rechner (z.B. lokal bei Dir) erzeugen und immer bevor Du composer install durchführst, dorthin kopieren.
Und Du müsstest die composer.phar in jedes Projekt (sicherlich meinst Du live, stage usw.), das Du auf dem 1und1 Server liegen hast wieder reinkopieren.

Um Dein Frustrationslevel zu senken empfehle ich Dir, mit Deinem Auftraggeber zu sprechen und das Serverpaket bei 1und1 entweder zu upgraden oder den Server sogar noch zu wechseln.

@Mario_Lorenz
danke… ich habe jetzt 3 Tage mit der IONOS Hotline verschwendet. Trotz Unlimited Plus Serverpaket Vertrag gab es dort keine Hilfe. Im Gegenteil dort scheint der Composer weitgehend unbekannt zu sein.

Wenn ich den Provider nicht wechsen will bleibt also mit nur Lokal auf dem PC über XAMPP die Windowsversion des Composers zu installieren und die beschriebene Prozedur durchzuführen.

Das hat den Vorteil dass du dann auch gleich OXID lokal installieren kannst, dann hast du eine Testumgebung. Wenn du später etwas änderst an der composer.json dann kannst du sie gemeinsam mit composer.lock hochladen und erneut composer install ausführen. Allerdings aktualisiert composer install nur den vendor-Zweig, um die Dateien in source zu kopieren kannst du danach

composer run-script post-update-cmd

aufrufen.

Falls dein Windows-Rechner eine andere PHP-Version hat als der Webspace: Enforcing a PHP Version for Installed Composer Packages – Andy Carter

Andere Provider haben bei CLI (SSH) viel höhere Limits eingestellt als bei CGI (apache), bei 1und1 ist beides gleich, deshalb geht’s nicht. Composer update lokal in einer Testumgebung auszuführen ist aber sowieso besser als das in der Live-Umgebung zu machen.

Es ist nicht super easy, aber falls du dich mal in die Materie “CI” reinlesen möchtest empfehle ich dir Gitlab zu nutzen. Ein privates Repo welches mit CI die Daten mit composer / npm aufbaut und dann auf deinen Server per FTP oder Rsync hochlädt - dev und live kannst du einstellen und steuern.

Lernaufwand ca 4-8h aber danach hast du nie wieder Probleme mit Composer oder sowas, weil alles auf Gitlab fertig verarbeitet wird. Auch bei allen anderen Projekten würde dir das helfen - falls du welche hast. Deine Partner/Mitarbeiter/Nachfolger werden dich vermutlich auch für dieses “einfache” Deployment lieben.

Hier wäre die Anleitung dafür:

Hier die Anleitung wie man SSH Keys nutzt, damit Gitlab ohne nutzername/passwort auf deinen Server kommt:
https://docs.gitlab.com/ee/ssh/

1 Like

Vielen Dank,
aber um mich in diese Materie so tief einzuarbeiten fehlt mich schlichtweg leider die Zeit.
In meiner Computer Anfangszeit habe ich mit dem Betriebssystem CP/M auf 8 Zoll Disketten angefangen (kennt bestimmt keiner mehr :slight_smile: )
Ich habe mir bis zur heutigen Zeit alles nötige selbst erarbeitet.
Ich muss mich um das Tagesgeschäft meiner kleinen Firma kümmern. Da bleibt nich viel Zeit für Oxid.
Wie relativ einfach war doch die Installation von Oxid 4.
Ich habe dann Anfang 2018 Version 6 mit Composer installiert. Es hieß das zuküftige updates mit Composer problemlos ausgeführt werden können.
Erst jetzt, nachdem Modul uploads nötig sind (never touch a running system) habe ich erkannt das dem nicht so ist!

Ich werde jetzt XAMPP mit PHP 7.1 und Composer auf meinem PC installiert

Gut wäre eine strukturierte Anleitung wie ich bei i updates oder Modul laden vorgehen muss.
also z.B. das handling mit composer.json und composer.lock

Nach 4-8h hat man sich gerade mal eingelesen was ein Git Repository ist. :wink:

1 Like

Den Shop gibt es schon? In dem Fall würde ich erst eine lokale Kopie anlegen:

  • DB exportieren und lokal importieren
  • Alle Dateien per FTP ziehen
  • config.inc und htaccess anpassen
  • /tmp leeren

Ach ich geh einfach davon aus, das die Tutorials einem das “Was und Warum” abnehmen. Verstehen kann man es später noch :smiley: