Wie kann man Komponisten von überall ausführen?

78

Ich habe gerade Composer in meinem /usr/binOrdner installiert. Wenn ich diesen Ordner ausführe, php composer.pharerhalte ich die Hilfeinformationen zu Composer. Aber wenn ich versuche, dasselbe aus einem anderen Ordner auszuführen, bekomme ich Could not open input file: composer.phar.

Wie kann man php composer.pharvon überall ohne Probleme anrufen ?

ziiweb
quelle

Antworten:

55

composer.phar kann alleine ausgeführt werden, ohne dass ein Präfix vorangestellt werden muss php. Dies sollte Ihr Problem lösen (im Unterschied zwischen $ PATH von bash und include_path von php).

Maerlyn
quelle
10
Sie können es auch in nur Komponist umbenennen und dann einfach tun composer install.
Seldaek
meine composer.phar ist installiert. (Ich habe mit php composer.phar gecheckt) Aber ich bekomme den Ort nicht. Wie finde ich den Pfad der Position von composer.phar? Ich benutze UBUNTU.
Nana Partykar
Wenn Sie ausführen können php composer.phar, befindet es sich wahrscheinlich in Ihrem aktuellen Verzeichnis.
Maerlyn
23
Ich denke, Sie möchten einen globalen Zugriff auf Ihre composer.phar. Verschieben Sie es und erstellen Sie einen Alias: sudo mv composer.phar /usr/local/bin/dann alias composer='/usr/local/bin/composer.phar'.
Stéphane
110

Sie können eine globale Installation durchführen ( archivierte Anleitung ):

Da Composer mit dem aktuellen Arbeitsverzeichnis arbeitet, ist es möglich, es systemweit zu installieren.

  1. Wechseln Sie in ein Verzeichnis in Ihrem Pfad wie cd /usr/local/bin
  2. Holen Sie sich Composer curl -sS https://getcomposer.org/installer | php
  3. Machen Sie das Phar ausführbar chmod a+x composer.phar
  4. Wechseln Sie in ein Projektverzeichnis cd /path/to/my/project
  5. Verwenden Sie Composer wie gewohnt composer.phar install
  6. Optional können Sie die umbenennen , um es einfacher zu machen ,composer.phar composer

Update : Manchmal können oder möchten Sie nicht herunterladen /usr/local/bin(einige haben Probleme mit Benutzerberechtigungen oder eingeschränkten Zugriff). In diesem Fall können Sie dies versuchen

  1. Terminal öffnen
  2. curl -sS http://getcomposer.org/installer | php -- --filename=composer
  3. chmod a+x composer
  4. sudo mv composer /usr/local/bin/composer

Update 2 : Für Windows 10 und PHP 7 empfehle ich dieses Tutorial . Persönlich habe ich Visual C ++ Redistributable für Visual Studio 2017 x64 vor PHP 7.3 VC15 x64 installiert. Überprüfen Sie nicht, welche Versionen von beiden auf der Seite PHP für Windows im Seitenmenü verfügbar sind . Lesen Sie es sorgfältig durch und möglicherweise kann der Abschnitt "Aktivierungserweiterungen" abweichen ( extension=curlanstelle von extension=php_curl.dll). Funktioniert wie ein Zauber, viel Glück!

quantme
quelle
3
Sie bemerken nicht, dass Sie die Datei umbenennen müssen, damit sie mit nur composer- guter Anmerkung hier aufgerufen wird .
Andrew Atkinson
2
@ AndrewAtkinson Alternativ können Sie vor dem Download mitcurl -sS https://getcomposer.org/installer | php -- --filename=composer
quantme
Ich möchte mich nur dafür bedanken. Ich hatte Probleme, die zugrunde liegende Logik zu verstehen, und getcomposer.org selbst kann dies nicht sehr gut erklären. Vielen Dank! Ich habe es zum Laufen gebracht.
Trace DeCoy
28

So führen Sie Composer von überall (unter MacOS X) über das Terminal aus

Hintergrund:

Auf der getComposer-Website heißt es eindeutig: Installieren Sie den Composer mit dem folgenden Befehl curl:

curl -sS https://getcomposer.org/installer |php

Und es macht auf jeden Fall das, was es tun soll. Und dann heißt es, die Datei composer.phar in das Verzeichnis / usr / local / bin / composer zu verschieben, und dann ist Composer global verfügbar, indem Sie die folgende Befehlszeile im Terminal verwenden!

mv composer.phar /usr/local/bin/composer

Frage:

Das Problem, das mich zu Google führt, ist, dass ich die obige Zeile in Mac OS X Terminal ausgeführt habe. Die Berechtigung wurde verweigert. Wie folgt:

mv: rename composer.phar to /usr/local/bin/composer: Permission denied

Antworten:

Der folgende Link führte mich wie ein Zauber zur Lösung und ich bin dafür dankbar. Das, was ich gerade verpasst habe, war der Befehl sudo vor der oben angegebenen Befehlszeile "Verschieben". Jetzt lautet mein Verschiebungsbefehl wie folgt:

sudo mv composer.phar /usr/local/bin/composer
Password:

Sie werden direkt aufgefordert, sich zu authentifizieren und zu prüfen, ob Sie berechtigt sind. Wenn Sie also ein gültiges Kennwort eingeben, wird das Verschieben ausgeführt, und Sie können mithilfe der folgenden Zeile überprüfen, ob Composer global installiert ist.

composer about

Ich hoffe, diese Antwort hat Ihnen geholfen, Ihre Sichtweise zu erweitern und Ihr Problem endlich zu lösen.

Prost!

Randika Vishman
quelle
1
> Und dann heißt es, die Datei composer.phar in das Verzeichnis zu verschieben / usr / local / bin / composer /usr/local/bin/composerist kein Verzeichnis. Dies ist der neue Name für die Datei, die zuvor aufgerufen composer.pharwurde.
XedinUnknown
1
Arbeitete für mich unter macOS Sierra.
Vahid Amiri
17

Installieren Sie zuerst den Composer wie in der Installationsdokumentation des Composers beschrieben . Ich habe hier nur als Referenz hinzugefügt.

curl -sS https://getcomposer.org/installer | php

und verschieben Sie die Datei dann nach '/ usr / local / bin'.

sudo mv composer.phar /usr/local/bin/composer

Versuche zu rennen composer -V. Wenn Sie eine Ausgabe wie Composer versiongefolgt von der Versionsnummer erhalten, wird der Composer erfolgreich installiert.

Wenn Sie eine Ausgabe wie diese erhalten composer: command not found, verwenden Sie den folgenden Befehl, um einen Alias ​​für den Komponisten zu erstellen. Es wird also global ausgeführt.

alias composer='/usr/local/bin/composer'

Wenn Sie jetzt ausführen composer -V, erhalten Sie die Ausgabe, Composer Versiongefolgt von der Versionsnummer.

Hoffe das wird jemandem helfen.

Mahendran Sakkarai
quelle
6

Führen Sie einfach diesen Befehl aus, um Composer global zu installieren

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
Tahir Yasin
quelle
Dies löst mein Problem mit der Frage nach dem Sudoer-Passwort. Vielen Dank
MadzQuestioning
6

Verschieben Sie es einfach in einen /usr/local/binOrdner und entfernen Sie die Erweiterung

sudo mv composer.phar /usr/local/bin/composer
LeoSarli
quelle
Genau das, was ich brauchte, danke
Bobby Axe
2

Gehen Sie für MAC und LINUX wie folgt vor:

Fügen Sie das Verzeichnis hinzu, in dem sich composer.phar befindet. PATH:

export PATH=$PATH:/yourdirectory

und benennen Sie dann composer.phar in composer um:

mv composer.phar composer
Tadej
quelle
1

Um es von einem anderen Ort aus auszuführen, können Sie das mit dem Programm gelieferte Composer-Programm verwenden. Es ist im Grunde ein Bash-Skript. Wenn Sie es nicht haben, können Sie es erstellen, indem Sie einfach den folgenden Code in eine Textdatei kopieren

#!/bin/sh

dir=$(d=$(dirname "$0"); cd "$d" && pwd)

if command -v 'cygpath' >/dev/null 2>&1; then
  dir=$(cygpath -m $dir);
fi

dir=$(echo $dir | sed 's/ /\ /g')
php "${dir}/composer.phar" $*

Speichern Sie dann die Datei in Ihrem bin-Ordner und nennen Sie sie Composer ohne Dateierweiterung. Fügen Sie dann den Ordner bin zu Ihrer Umgebungsvariablen f hinzu

Muhammad Raihan Muhaimin
quelle
1

Sie können eine einfache globale Installation durchführen, um sie von überall aus auszuführen

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

Die Website https://getcomposer.org/doc/00-intro.md#globally empfiehlt diesen Weg. Funktionierte gut unter Ubuntu 14.04 kein Problem. Auf diese Weise müssen Sie dies nicht als Beispiel in einem Verzeichnis php compomser.phar showtun composer show, mit dem Sie arbeiten.

user3257693
quelle
0

Ein Teil davon kann auf das Betriebssystem zurückzuführen sein, auf dem Ihr Server ausgeführt wird. Ich habe kürzlich eine Migration auf eine neue Hosting-Umgebung mit Ubuntu durchgeführt. Das Hinzufügen dieses Alias alias composer="/path/to/your/composer"zu .bashrc oder .bash_aliases funktionierte zunächst aus zwei Gründen nicht:

Auf dem Server wurde standardmäßig csh und nicht bash ausgeführt. Führen Sie aus, um zu überprüfen, ob dies in Ihrem Fall ein Problem darstellt echo $0. Wenn das zurückgegeben -cshwird, möchten Sie es in bash ändern, da einige von Composer ausgeführte Prozesse mit csh / tcsh fehlschlagen .

Um dies zu ändern, überprüfen Sie zunächst, ob bash auf Ihrem Server verfügbar ist, indem Sie ausführen cat /etc/shells. Wenn in der zurückgegebenen Liste bin/bashangezeigt wird, können Sie die Standardeinstellung durch Ausführen in "Bash" ändern chsh -s /bin/csh.

Jetzt sollten Sie in der Lage sein, Composer auszuführen, aber normalerweise müssen Sie unter Ubuntu das Skript bei jeder Sitzung laden, indem Sie Ihre Bash-Skripte durch Ausführen von source ~/.bashrcoder beziehen source ~/.bash_profile. Dies liegt daran, dass Ubuntu in den meisten Fällen Ihr Bash-Skript nicht lädt, da es .profileals Standardskript geladen wird .

Um Ihre Bash-Skripte beim Öffnen einer Sitzung zu laden, fügen Sie dies Ihrem .profile hinzu (wenn Ihr Bash-Skript .bashrc ist - ändern Sie es entsprechend, wenn .bash_profile oder ein anderes):

if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi

Schließen Sie zum Testen Ihre Sitzung und laden Sie sie neu. Wenn es richtig funktioniert, läuft composer -voder which composersich wie erwartet verhalten sollte.

Karolus
quelle