[gelöst]Composer Grundsatzfrage
am 19.12.2022 - 19:07 Uhr in
Hallo zusammen.
Ich hab einen Knoten im Kopf. Ich nutze Drupal 9 und habe es ohne Composer installiert (bei DomainFactory). Ganz klassisch via FTP hochgeladen, Datenbank eingegeben und installiert. Nun möchte ich ein Modul aktivieren (Smart Date Recurring) und mein Drupal sagt mir ich benötige Composer. Davor habe ich mich ja extra gedrückt, weil ich das mit Composer nicht verstehe. Was kann ich jetzt machen?
Wenn ich das Modul ohne Composer nicht aktiviert bekomme, wie komme ich nun zu dem Composer? Wie kann ich das Composer nutzen ohne mein Drupal komplett neu installieren zu müssen? Kann ich Composer zu meiner laufenden Installation hinzufügen und nutzen? Aber wie mache ich das? Ich bräuchte eine Schritt für Schritt anleitung :(
Ich kann mir vorstellen wie ihr jetzt mit den Augen rollt...aber ich habe keine Ahnung, weiß nicht mal wo ich ansetzen muss.
Danke.
- Anmelden oder Registrieren um Kommentare zu schreiben
Drupal 9 mit Composer neu aufsetzen und danach umziehen
am 19.12.2022 - 19:59 Uhr
Hallo,
wenn ich vor der Aufgabe stünde, würde ich per Composer eine neue Drupal Instanz aufsetzen. Das Ganze natürlich in einem separaten Verzeichnis. Die benötigten Zusatzmodule (Contribmodule) per
composer require drupal/module_machine_name
hineinholen. Dann noch die Custom themes und Custom modules sowie die Dateien aus dem sites/default - Ordner rüberkopieren und fertig. Abschließend nicht vergessen die Domain in das neue Verzeichnis auflösen zu lassen.Viele Grüße
Christian
Der Beitrag von Christian
am 20.12.2022 - 03:46 Uhr
Der Beitrag von Christian geht schon ganz gut in die richtige Richtung. Es gibt überhaupt keinen Grund dafür sich vor Composer zu drücken. Du kannst jede Seite, die nicht mit Composer funktioniert nachrüsten.
Composer ist wie eine Haushaltshilfe, die du ohne Gewissensbisse einkaufen schickst, damit sie dir die Zutaten für eine Torte kauft. Die Einkaufsliste ist die Composer.json, die du mit dem require Befehl oben füllen kannst. Was deine Haushaltshilfe Composer macht wenn du Composer require drupal/xxx eingibst ist, dass er nicht direkt die Sahne kaufen geht, sondern alles was du brauchst um die Sahne herzustellen. Das Macht Composer mit jeder Zutat so also mit jedem Modul jedem Theme usw. Die fertige Sahne ist ein Bestandteil deiner Torte und die Abhängigkeiten, die Zutaten deiner Sahne. Im Grunde muss sich also niemand vor Composer fürchten, der Backen oder Kochen kann.
Um deine Drupal installation mit Composer nachzubauen musst du also nur eine Liste der Module und Themes haben, die in deiner Installation von Drupal Installation sind. Das ist quasi dein Rezept. Dann packst du das ganze auf nen Einkaufszettel.
Fang mit dem Tortenboden an:
composer create-project drupal/recommended-project meindrupalverzeichnis
Und dann packst du die Zutaten einzeln mit Composer require drupal/modulname oder composer/themename oben drauf.
Wenn du fertig bist hängst du die Datenbank wieder an deine Torte und serviert das ganze.
So einfach geht Composer.
Selbst die Fehlermeldungen, die Composer ausgibt sind im Prinzip nur Meldungen wie: sie haben für ihre Torte Pfeffer statt Zucker verwendet, ihre Torte kann nicht schmecken. Davor muss man sich nicht drücken. Das ist Backen für Anfänger nur eben mit Drupal.
Sobald du die Codebasis deiner Seite mit Composer neu gebaut hast, die Datenbank wieder hingehängt hast und die Seite funktioniert hast du nicht nur die Möglichkeit smatdate hinzuzufügen, sondern alles was du sonst so brauchen kannst.
Das ganze steht (ohne das gelaber über backen von Torten und Kuchen) hier: https://www.drupal.org/docs/develop/using-composer/using-composer-with-d...
Hier rollt keiner mit den Augen. Wir sind schließlich hier, um den Leuten Drupal näher zu bringen. Sag bescheid, wenns nicht klappt, dann sehen wir weiter.
https://drupal-tv.de
Drupal sehen und lernen
Noch was Wichtiges dazu
am 23.12.2022 - 19:46 Uhr
Hallo Josi,
ich bin vor ca. einem Jahr vor dem gleichen Problem gestanden und hab zunächst die composer Hürde "verweigert". Ich bin ja kein EDV Ausgebildeter. Mittlerweile beherrsche ich es halbwegs. Was die Vorredner noch nicht erwähnt haben:
Ich hab es mir von einem Profi zeigen und installieren lassen und kann seitdem mit einer handvoll Befehle drush und composer problemlos verwenden. Um die Drupal Projekte ohne tieferes Verständnis in Minutenschnelle upzudaten, zweng der Sicherheit, die Module in- und deinstallieren und ebenso updaten, auszuprobieren. Das kostet sonst ewig viel Zeit. Wenn du selbst nicht so viel investieren willst gibts hier im Forum sicher wen, der es in eine bezahlten Stunde bei dir einbaut.
Der composer holt dir alle Zutaten (wie der Vorredner mit der Torte erklärt hat) herbei und was das Beste ist, er prüft auch ob alles zusammenpasst und im Zweifel wird es nicht installiert oder verändert. Da bist du auf der sicheren Seite.
So wie ich Drupal bisher verstanden habe ist es ein wachsendes lebendiges Teil, eine Neuerung jagt die nächste - da bist du mit composer klar im Vorteil. Ich schau da einmal im Monat drüber und drupal zeigt ja an, wenn was Neues erforderlich wird.
Es lohnt sich - gutes Gelingen, Martin
Vielen lieben Dank an euch...
am 21.02.2023 - 18:00 Uhr
dafür das ihr euch Zeit für mich genommen habt. Ich es tatsächlich geschafft und via Putty das Composer auf den Webserver installiert bekommen.
Nun wollte ich mein bestimmtes Modul "Smart Date" installieren bzw updaten mit dem Befehl composer require 'drupal/smart_date:^4.0@alpha'
und dann gab es diese Meldung:
./composer.json has been updated
Running composer update drupal/smart_date
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Root composer.json requires drupal/smart_date ^4.0@alpha -> satisfiable by drupal/smart_date[4.0.0-alpha1].
- drupal/smart_date 4.0.0-alpha1 requires php >=8.0 -> your php version (7.4.33) does not satisfy that requirement.
Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
Installation failed, reverting ./composer.json and ./composer.lock to their original content.
Da ist doch die Ursache des
am 21.02.2023 - 18:23 Uhr
Da ist doch die Ursache des Problems klar angegeben. Wenn Du die Version ^4.0@alpha verwenden willst benötigst Du php8!! Da solltest Du bei Deinem Provider die PHP-Version auf php8.1.x mit x>= 6 einstellen. Danach sollte sich das Modul installieren lassen. Offenbar ist bei der Codierung von dem Modul bereits die Syntax von php8 verwendet worden. Daher hat der Entwickler diese PHP-Version als Bedingung festgelegt und der composer sorgt dafür, daß die auch eingehalten wird.
Wenn Du hingegen bei der Version 3.7 bleibst, ist php8 noch keine Bedingung, wie Du auf Drupal.org feststellen kannst (als :^3.7 am Ende).
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Wenn du über die composer "Hürde" drüber bist
am 21.02.2023 - 20:26 Uhr
... verdient das einmal echt Respekt. So wie es sich in deinem ersten Post angehört hatte klang es sehr schwierig. Zu einer bestehenden D9 Installation den composer anzubauen ist herausfordernd. Und hat ja auch gedauert (ca. 2 Monate warens oder?)
Das Tolle am composer ist ja, dass du immer Rückmeldung bekommst, ob sich ein neues Modul mit allen seinen Abhängigkeiten und Wechselwirkungen "ausgeht" oder nicht. Es kann in dem Zusammenhang vorkommen, dass es Widersprüche mit einem anderen Modul gibt oder dass sich eine bestimmte Version deines gewünschten Moduls entweder mit dem Kern oder wie hier jetzt mit der PHP Version nicht verträgt. In jedem Fall sagt dir composer Bescheid verläßlich und er probierts oder er verweigert die Installation. Wie schon erwähnt ist PHP 8.x für D9 und D10 angesagt.
Wenn composer "verweigert" lies und google die Begründung dafür - das ist sehr hilfreich.
Meine Empfehlung: Besorg dir auch noch Drush, falls du es nicht bereits verwendest. Nach eine Installation gibts immer noch den Arbeitsspeicher zu leeren (drush cr), zu checken ob ein DB update nötig wäre (drush updbst oder drush updb), nachzusehen ob ein Sicherheitsupdate für D9 zu machen ist (drush sec). Das alles und noch viel mehr macht dir drush mit wenigen Handgriffen. Es geht ebenfalls über die shell. Das heißt in dein Verzeichnis wechseln mit cd /var/www/deinverzeichnis und dort dann werkeln.
Danke für deine Antwort aber
am 22.02.2023 - 10:00 Uhr
ich hatte mich auch gewundert, denn ich benutze für diese Webseite PHP 8.2 (siehe Bild). Habe gerade genauer nachgegeschaut. Ich habe die Seiten bei DomainFactory gehostet und jede Domain (2 Stück) hat eine eigene Datenbank. Eine Seite läuft mit php 7.4 und meine neue mit php 8.2. Nun hatte ich ja einen SSH-Zugang angelegt, welcher jedoch laut DomainFactory grundsätzlich php 7.4 nutzt, also das php von der alten Seite. Ich hatte gedacht, stelle ich die alte seite um auf php 8 aber dann funktioniert sie nicht korrekt, also hab ichs wieder auf php 7.4 zurückgesetzt. Bei dem SSH-Zugang steht, wenn ich eine bestimmte PHP-Version für den SSH-Zugang nutzen möchte, muss ich das händisch in die .htaccess reinschreiben. Nun liegt ja im Drupalverzeichnis bereits eine .htaccess, eine zweite kann ich nicht reinlegen und die bestehende kann ich auch nicht verändern, denn dann ist die seite tot. Also Problem erkannt aber ich weiß grad nicht wie ich es lösen soll :(
Manchmal bietet der Provider
am 22.02.2023 - 14:04 Uhr
Manchmal bietet der Provider die verschiedenen Versionen auf der Kommandozeile mittels eines Suffixes an (z.B. php8.2 o.ä.). Das sollte der Support Deines Providers Dir sagen können. Dann kann man mittels eines "Symbolischen Links" ein php mit der "richtigen" Version in einen Unterverzeichnis des eigenen Home-Ordners anlegen. Nimmt man dieses Verzeichnis vorne in die PATH-Variable auf, wir immer wenn man auf der Kommandozeile php aufruft der Link auf diese PHP-Version gefunden, was man leicht mit "which php" testen kann. Auf diese Weise kannst Du selbst festlegen, mit welcher PHP-Version Du aktuell auf der Kommandozeile arbeiten willst. Dieser "Trick" läuft bei mir aber noch unter Unix Grundwissen.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Bin da auch nicht sicher
am 22.02.2023 - 14:26 Uhr
...aber läßt es sich mit dem Anlegen einer .bash Datei auch regeln? Mir hat das ein Fachmann so eingerichtet und ich versuche es nachzu vollziehen.
Es sieht dann wie folgt aus und "zwingt" den composer, eine bestimmte php Version zu verwenden.
userdir='/var/www/vhosts/meinwebhostingzugangspfad.at'
# Set PHP 8.0 as default PHP version on commandline interface.
alias php="php80"
alias ll="ls -hl"
# Composer
alias composer="php80 -d memory_limit=-1 $userdir/composer/composer"
# Drush
alias drush="php80 -d memory_limit=-1 $userdir/drush/vendor/bin/drush"
Wenn ich composer oder auch drush aufrufe, dann wird immer php 8.0 verwendet. Der Befehl "composer" reicht aus, ich muß nicht mehr den ganzen Pfad eingeben.
Bei composer funktioniert das
am 22.02.2023 - 15:42 Uhr
Bei composer funktioniert das mit dem Alias problemlos. Bei drush bin ich damit bereits auf die Nase gefallen. Seit Drupal 9 muß drush in der jeweiligen Installation vorhanden sein und eine globale Installation funktioniert nicht mehr für alle Befehle. Drush braucht intern auch den php-Befehl. Also kann der Alias für drush nicht immer so, wie von Dir angegeben, funktionieren. Das trifft besonders bei mehreren Installationen im gleichen Webspace zu (bei verschiedenen Domains oder Subdomains).
Wenn das bei Dir noch funktioniert, ok. Aber verallgemeinern kann man das nicht.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
habs geschafft :)
am 01.03.2023 - 16:42 Uhr
Ich habe mich an meinen Provider gewendet, er schrieb: ..."um eine abweichende PHP Version unter anderem für den Composer dauerhaft zu verwenden, muss vorab ein Softlink auf die gewünschte PHP Version gesetzt werden. Hier ein Beispiel für die PHP8.1:
cd ~; mkdir -p ~/.bin && cd .bin && ln -s /usr/bin/php81 php; cd ~/
Anschließend müssen Sie dann in Ihrer .bashrc folgende Zeile hinterlegen:
export PATH=$HOME/.bin:$PATH
Sollte keine .bashrc vorhanden sein, legen Sie diese einfach an. Bitte passen Sie den Befehl nur auf Ihre gewünschte PHP-Version an (php80, php82).
Jetzt geht mit shell und Compoder auch alles.
Mannoman was für eine Arbeit, dahinter zu steigen hinter diesem ganzen php-shell-composer zeugs. Ich danke euch vielmals, ihr habt mich mit euren Beiträgen Stück für Stück zum Ziel gebracht und vor allen Dingen den Knoten im Kopf gelöst. Hat sich auf jeden Fall gelohnt endlich mal in dieses Thema einzusteigen...sich davor drücken bringt auch zukünftig nichts.
Sonnige Grüße,
Josi
Ok, dann Ende gut alles gut
am 02.03.2023 - 12:02 Uhr
bis zum nächsten Mal, wenn es wieder um composer Fragen geht. Hier im Forum ist es üblich, dass eine erfolgreich beendete Anfrage mit einem vorangestellten [gelöst] gekennzeichnet werden, wenn du das im Titel deiner ersten Anfrage noch einfügen kannst. Danke und beste Grüße.
Tolles Forum, so viele
am 14.03.2023 - 13:27 Uhr
Tolles Forum, so viele interessante Informationen.