[gelöst]composer installieren - php version & Consorten
am 18.12.2024 - 19:55 Uhr in
Wieder einmal die Frage nach dem Installieren des composer. Ich brauch Nachhilfe, obwohl schon ein paar mal geschafft. Bitt um support der unix-Fraktion hier. Meine Kernfrage lautet: An welcher Stelle des Installationsvorganges gebe ich die zu verwendende PHP Version an?
1. Wenn ich den composer installieren will führe ich das im root aus (Ja/Nein) oder gehe ins Verzeichnis des jeweiligen Projektes? Ich habs mit root versucht und es scheint zu passen.
2. composer ist installiert (version 2.8.4); um nicht umständlich php composer.phar... zu machen hab ich einen alias in einer Datei .profile angelegt, die beinhaltet folgendes: alias composer="/usr/bin/php ~/bin/composer.phar"
Natürlich hab ich zuvor ein Verzeichnis "bin" angelegt. Wobei ich nicht verstehe obs egal ist daß die auch .bash_profile heissen kann oder überhaupt nur .bash? Das hab ich in unterschiedlichen Varianten schon gesehen - was wäre korrekt?
3. Wenn ich composer mit "composer status" anzusprechen versuche, dann kommt folgendes: -bash-4.2$ composer status
Composer 2.3.0 dropped support for PHP <7.2.5 and you are running 5.4.16, please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.
Ich verstehe es soweit, dass nicht die richtige PHP Version angesprochen wird - ich will ja Drupal 11 danach installieren. Wo gebe ich das an, dass die PHP8.3 läuft? PHP 8.3 ist im webspace möglich und für die Domain auch eingestellt.
Danke für eure Antworten,
Martin
- Anmelden oder Registrieren um Kommentare zu schreiben
php -v
am 20.12.2024 - 02:17 Uhr
bei mir muss ich das bei einem Neustart der Kommandzeile gelegentlich auch nachstellen, dann guck ich halt mit
php -v
nach der Version, wir sind bei 8.3In meinem Webspace geht das regelmäßig mit einem symbolischen Link:
ln -sfv /usr/bin/php8.3 /usr/bin/php
(muss natürlich nicht überall klappen).Zurück o.ä. z.B.
ln -sfv /usr/bin/php74 /usr/bin/php
. Die Versionen schreiben sich mal mit mal ohne Punkt, kann ich mir oft nicht merken ;-)-- Franz
noch ..
am 20.12.2024 - 02:40 Uhr
war vorhin nur die Hälfte -
- ja, ich nutze den Project-Pfad, wo dann composer,json liegt und Document-Root via web/...
auch als root trotz anderer Empfehlung, bisher kam ich durch ;-)
- für alles mögliche, auch drush und composer etc, nutze ich einfache aliase, die ich ja speichern kann.
Spurensuche composer install
am 20.12.2024 - 11:14 Uhr
was du schreibst kommt mir alles schon bekannt vor, fühlt sich aber wie im Dunklen herumzutappen an. Danke aber trotzdem Franz.
Gibts irgendwo eine Schritt für Schritt Anleitung zur Installation von composer, wo auch nicht-unixler sich auskennen?
php -v
ergibt PHP 8.3.10 (cli) (built: Aug .. das ist schon mal gut.Die composer Installation gemäß getcomposer.org ergibt eine composer.phar im Hauptverzeichnis (...you can place the composer.phar anywhere you wish...it you put it in a directory that ist part of your PATH you can access it globally) Zitat von getcomposer. Ja das würde ich gerne schaffen.
Das Verzeichnis bin/composer habe ich angelegt mit
mkdir -p /usr/local/bin
, dochmv composer.phar /usr/local/bin/composer
scheitert an den permissions. An welchen weiß ich nicht. Wenn ich versuchsweise die composer.phar einfach in das /bin/composer Verzeichnis schiebe geht das Zeug nimmer anzusprechen.Der composer ist und bleibt nur ansprechbar mittels php composer.phar
Die composer.phar liegt also im Hauptverzeichnis - wenn ich nun damit in meinem Projektordner etwas "composerieren" möchte, also mit dem langwierigen Befehl php composer... dann wird der composer nicht angestartet. Could not find input file oder so ähnlich. Vermutlich ist allen LeserInnen klar warum - nur mir nicht. Wahrscheinlich weil der Pfad nicht angegeben ist.
Da bräuchte ich nun den alles entscheidenden Tipp der community.
Wie schon der ehemalige österr. Bundeskanzler F. Sinowatz seinerzeit meinte: Alles ist etwas kompliziert. Ich hab das Prinzip noch nicht verstanden. PATH ist auch so ein Begriff in dem Zusammenhang, welcher und wohin? Dann kommt in den Verzeichnisbäumen immer wieder /local vor, ich hab aber keine lokale Installation mit Linux und so sondern mach das alles im webspace. Vermutlich auch so ein Mißverständnis.
webspace .. lokal
am 20.12.2024 - 23:30 Uhr
ich weiß micht mehr wie ichs installierte, komme grad nicht dazu zum suchen. Jedenfalls rufe ich den composer auf der Kommandozeile mit composer (oder einem alias) auf, d,h. ich hab irgendwann das phar einbauen können. Alles Spätere dann mit selfupdate,
Alles lokal mit Linux LMDE6.
ich übersah/sehe gerade - im webspace! Bei meinem Hostingpaket kam der composer auf der Kommandozeile ohne mein Zutun mit und verhält sich fast besser als lokal. Hast Du da nicht mehr Info vom Provider? getcomposer wieso? Im webspace sind natürlich permission nicht mehr Deine Sache. Dort eigene Ordner zu kreieren würde ich mir für composer nicht erlauben, das ist m.E. Sache vom Provider - den solltest Du behelligen, meine ich; (vielleicht hab ich oben mehr überlesen ,,)
Servus Franz
Na leider
am 21.12.2024 - 16:31 Uhr
im providing Paket ist der composer nicht enthalten, daher nicht automatisch da. Die Idee mit Verzeichnis anlegen und so habe ich aus einigen Anleitungen, die zum composer im Netz herumschwirren. Getcomposer.org ist der "offizielle" Vertreter dieses php Paketmanagers, vom MIT gegründet oder so. Die haben auf dieser Seite einige Info, aber es ist für mich zu hochschwellig und läßt sich nicht einfach mit copy&paste umsetzen.
In zwei anderen meiner Projekte funktioniert der composer mit einem alias problemlos. In weiterer Folge auch drush. Da sind Aktualisierungen im Nu erledigt.
Den composer einzurichten, das mach ich eher selten und jetzt grad hunzt es etwas. Grundlagen wissen fehlt. (noch)
Geschafft
am 21.12.2024 - 18:25 Uhr
Wer meine Lösung wissen will:
Nach x-fachen Versuchen mit .bash, .bashrc, .profile, . bash_profile , in bin und my_bin Verzeichnissen hab ich eine einfache Lösung für den Alias gefunden.
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
den Installerphp -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
Nun liegt eine composer.phar in deinem Hauptverzeichnis, meist ganz unten.
Du kannst nun den composer Befehl mit
php composer.phar ...
(hier dran käme der Befehl was du mit dem composer machen wolltest) - beispielsweise: php composer.phar list , dieser Befehl listet alle Möglichkeiten des composers auf.Wenn es dir zu lästig ist für jeden composer Befehl die ganze "Wurst" davor zu tippen dann legst du einen Alias dafür an.Das ging bei mir so:
In einem Editor (notepad+) legte ich die folgende Datei an: .bashrc (wichtig: mit Punkt vorangestellt), diese Datei liegt gleich beim composer.phar auf selber Ebene.
In der Datei ist folgender Code:
alias composer='php composer.phar'
Seitdem starte ich composer bequem mit composer für alle Befehle. Hoffentlich bleibts so.
Das mit der composer
am 21.12.2024 - 18:26 Uhr
Das mit der composer Installation in einem bin-Verzeichnis im Unix Homeordner ist schon mal hervorragend. Dann aber mit Deinem Alias zu arbeiten ist nicht so gut.
Ich löse das so:
Nachdem der Composer als composer.phar installiert ist, benenne ich ihn mitels Unix mv-Befehl in composer um und mache ihn executable (chmod 644 composer).
Du solltest außerdem Deinen Support nach dem Pfad der von Dir gewünschten Php-Version fragen. Dann fügst Du im gleichen Verzeichnis Verzeichnis einen Symbolische-Link ein "ln -s [Pfad zum Bin des PHP Programms] $HOME/bin/php"
Bei mir: ln -s /usr/bin/php8.1 $HOME/bin/php"
Jetzt noch in der .bashrc einbauen: "export PATH=$HOME/bin:$PATH" (ohne die Gänsefüßchen).
Danach aufrufen ". .bashrc" um dieses Script einmal auszuführen (Passiert später beim Login in der Shell automatisch).
Path ist der Unix Suchpfad für Programme. Sobald ein passendes Programm (Namensgleichheit) gefunden ist, bricht die Suche ab. Damit werden sowohl Dein composer gefunden als auch Dein PHP-Programm.
Prüfen kann man das mit dem which-Befehl. Der ist aber unter Umständen (wie bei meinem Provider) abgeklemmt. Dann ist aber der Befehl type fast genausogut.
Beispiele:
which php
/home/bin/php
type php
php ist /home/bin/php
which composer
/home/bin/composer
composer -V
Composer version 2.6.6 2023-12-08 18:32:26
Hier sieht man, das composer nicht explizit über php aufgerufen wird, das passiert automatisch im Hintergrund.
Ich hoffe diese Erklärungen helfen zum weiteren Verständnis.
Aktenzeichen xy weiter ungelöst
am 21.12.2024 - 22:14 Uhr
Danke Werner, du hast mir da schon einmal geholfen. Meine oben beschriebene Lösung funktionierte auch nur teilweise, immerhin konnte ich ein neues D11 aufsetzen. Bei der Installation von drush hat's mich dann geschleudert.
Teil 1: das Umbenennen von composer.phar in composer und die entsprechenden Rechte sollte geschafft sein. Bei mir liegt die composer.phar jedoch im Hauptverzeichnis, also nicht in irgendeinem /bin.
Teil 2: Das ist der Pfad zum PHP8.3 für .bashrc:
export PATH=/opt/plesk/php/8.3/bin:$PATH
Teil 3:
ln -s /opt/plesk/php/8.3 $HOME/bin/php
Da weiß ich jetzt nicht, wo in welches Verzeichnis ich gehen soll, um das einzugeben.Which composer
funktioniert bei mir prinzipiell.Die momentae Position der composer.phar (im Hauptverzeichnis und somit außerhalb meines Projektordners hatte Folgen. Die Installation von D11 ist gelungen, weil ich da ja den Projektordner als Ziel angegeben habe. Der composer hat das problemlos gemacht.
Als ich dann drush installiert habe, landete dieser außerhalb des Projektordners in einem eigenen Vendor Verzeichnis und war mit vendor/bin/drush nicht aufrufbar. Ein Durcheinander.
Zu Frage 1:Das Executable
am 21.12.2024 - 22:18 Uhr
Zu Frage 1:
Das Executable von PHP bleibt liegen wo es ist. Du sorgst nur mit dem symbolic link dafür, daß unter den Namen php die verlinkte Version von PHP unter dem Namen php aufgerufen wird. Das ist für drush Funktionalität extrem wichtig. Im Übrigen sind php auf der Kommandozeile und php im Webbrowser unabhängig von einander!!
Wo php in der für Dich richtigen Version liegt, ist vom Provider abhängig. Bei meinem hat er das Programm einfach php8.1 genannt und nach /usr/bin kopiert. Für drush muß es aber php heißen. Bei Plesk Installationen meine ich mich dunkel zu erinnern, daß der Pfad /opt/share/php/[Versionsnummer]/bin/php lautet. Das solltest Du überprüfen. etwa mit ls /opt/share/php um zu sehen ob der Pfad richtig ist. Dann den Pfad immer weiter verlängern, bis Du weißt, wo das richtige Programm liegt.
Ich sehe gerade, daß du den Pfad von php in Deiner PATH-Variablen eingetragen hast. Kann man machen. Ich mag die Version mit dem Symbolischen Link lieber. Da kann ich schneller die Version ändern.
Zu Frage 2:
Du kannst composer nicht im bin-Verzeichnis Deines Providers umbenennen. Dazu fehlen Dir die Rechte. Im bin-Verzeichnis bei Dir im $Home geht das aber. Wenn Du den Namen auf composer.phar beläßt, kannst Du das Programm nicht einfach über composer aufrufen. Dann braucht es wieder Deinen Alias. Wenn Du es nicht executable machst, mußt Du es über vorgestelltes php aufrufen, denn: php ist executable und lädt dann die Code-Datei composer.phar und führt sie aus. Die muß unter den Bedingungen selbst nicht executable sein.
Wenn das Programm composer in Deinem Suchpfad (PATH) zuerst gefunden wird, interessiert die Version Deines Provider nicht mehr, denn der erste Fund ist maßgebend.
Teil 3: ln -s /opt/plesk/php/8.3 $HOME/bin/php
Das geht so nicht sondern:
ln -s /opt/plesk/php/8.3/bin/php $HOME/bin/php
Soll ich nun den composer.phar
am 21.12.2024 - 22:35 Uhr
in meinen /bin Ordner verschieben und dort umbenennen? Oder neu dort hineininstallieren? Ich weiß das sind möglicherweise "grausame Ideen".
Den Pfad habe ich in meinem post schon genannt - in welchem Verzeichnis muß ich mich befinden um das ls...aufzurufen?
Ich muß da morgen weiter tun.
Ich würde composer neu im
am 21.12.2024 - 22:38 Uhr
Ich würde composer neu im eigenen bin installieren.
Um den Symbolischen Link zu erzeugen ist es egal wo du stehst, da im Befehl der vollständige Zielpfad angegeben ist.
Im bin-Verzeichnis reicht: ln -s /opt/plesk/php/8.3/bin/php . (der Punkt gehört noch zum Befehl!!)
dazu gelernt ..
am 22.12.2024 - 01:22 Uhr
.. hab ich hier natürlich auch. Wenn der Composer nicht vom Provider kommt .. spannend, hätte ich mir auch nicht so zugetraut, und Werner hat es weiter einluechtend gemacht, gut!
Die Suche geht weiter
am 22.12.2024 - 12:54 Uhr
Ich hab den composer komplett neu in das Verzeichnis /bin installiert.
Folgende Vorgangsweise:
1. php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
2. php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
3. php composer-setup.php --install-dir=<strong>bin</strong> --filename=composer (hier hab ich als Verzeichnis /bin angegeben)
4. php -r "unlink('composer-setup.php');"
Den composer sollte ich nun mit folgendem Befehl nutzen können: (Use it) php bin/composer, das geht grad nur im Hauptverzeichnis. Doch im Projektordner wird er nicht gefunden. Dann weiter mit deiner Anleitung wobei das mit dem symbolischen Link nicht geklappt hat.
ln -s /usr/bin/php8.3 $HOME/bin/php
ln: failed to create symbolic link '/var/www/vhosts/c8wfj17e.web147.alfahosting-server.de/bin/php': File exists
-bash-4.2$ which php
/usr/local/bin/php
-bash-4.2$ type php
php is hashed (/usr/local/bin/php)
-bash-4.2$ which composer
/usr/bin/which: no composer in (/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin)
In der .bashrc hab ich Folgendes eingetragen:
export PATH=$HOME/bin:$PATH
Der composer lässt sich nun im Hauptverzeichnis und auch im Projektordner ansprechen. Ich traue dem noch nicht so recht und werde mal versuchen, ein paar Module zu installieren.
Wenn ich das nun mit deinen Vorgaben "teste" dann sehe ich folgendes:
-bash-4.2$ which composer
~/bin/composer
-bash-4.2$ type php
php is /usr/local/bin/php
-bash-4.2$ which php
/usr/local/bin/php
-bash-4.2$ composer -V
Composer version 2.8.4 2024-12-11 11:57:47
PHP version 8.3.10 (/opt/plesk/php/8.3/bin/php)
Run the "diagnose" command to get more detailed diagnostics output.
-bash-4.2$
Könnte so passen, was meinst du? Zum Drüberstreuen habe ich noch composer diagnose gemacht - geht mich das etwas an an, wenn git nicht in neuester Version vorliegt? Wie würde ich's aktualisieren?
-bash-4.2$ composer diagnose
Checking composer.json: OK
Checking composer.lock: OK
Checking platform settings: OK
Checking git settings: WARNING
Your git version (1.8.3.1) is too old and possibly will cause issues. Please upgrade to git 2.24 or above
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking connectivity to https://packages.drupal.org/8: OK
Checking github.com rate limit: OK
Checking disk free space: OK
Checking pubkeys:
Tags Public Key Fingerprint: 57815BA2 7E54DC31 7ECC7CC5 573090D0 87719BA6 8F3BB723 4E5D42D0 84A14642
Dev Public Key Fingerprint: 4AC45767 E5EC2265 2F0C1167 CBBB8A2B 0C708369 153E328C AD90147D AFE50952
OK
Checking Composer version: OK
Checking Composer and its dependencies for vulnerabilities: OK
Composer version: 2.8.4
PHP version: 8.3.10
PHP binary path: /opt/plesk/php/8.3/bin/php
OpenSSL version: OpenSSL 1.0.2k 26 Jan 2017
curl version: 7.29.0 libz 1.2.7 ssl NSS/3.53.1
zip: extension present, unzip present, 7-Zip not available
Der Symbolic-Link hat nicht
am 22.12.2024 - 15:21 Uhr
Der Symbolic-Link hat nicht funktioniert, weil in Deinem ~/bin-Verzeichnis bereits eine Datei namens php existiert hat (man beachte die Fehlermeldung). also diese Datei löschen und nochmal den Symbolic Link anlegen. Wenn Du dort nicht den Link zu php hast, wird der folgerichtig auch nicht dort gefunden, sondern da wo das System ihn anbietet. Bei Unix kommt es eben auf die Kleinigkeiten an.
Herzlichen Dank Werner
am 22.12.2024 - 20:40 Uhr
Aus meiner Sicht läuft alles bestens. Das war eine längere Reise, mit ungezählten Versuchen.
In meinem ~/bin Verzeichnis sehe ich keine php, da liegt nur der composer. Hab auch im filezilla keine Möglichkeit gefunden, die "unsichtbare" php aufzuspüren.
Macht es eigentlich noch Sinn, wenn ich die gesamte Anleitung nochmals bereinige und sie hier im Handbuch von DC zusammenschreibe?
Ich würde gerne so einen Beitrag geben, denn ich bin sicher, andere ringen auch mit der composer Insta.
Liebe Grüße,
Martin