it-swarm.com.de

Beim Versuch, drush auszuführen ": Keine solche Datei oder kein solches Verzeichnis"

Ich habe den ganzen Tag meinen Kopf gegen die Wand geschlagen, um herauszufinden, warum Drush plötzlich aufgehört hat zu arbeiten.

Ich habe über Composer neu installiert, verschiedene Versionen ausprobiert, immer den gleichen Fehler.

Wenn ich which drush Eingebe, erhalte ich /home/user/.composer/vendor/bin/drush, Was korrekt ist.

Wenn ich sh -vx drush Eingebe, um zu debuggen, was mit dem Skript passiert, erhalte ich die folgende Ausgabe:

#!/usr/bin/env sh
#
# This script is a simple wrapper that will run Drush with the most appropriate
# php executable it can find.
#
# Solaris users: Add /usr/xpg4/bin to the head of your PATH
#

+ 
: not found/.composer/vendor/bin/drush: 8: /home/user/.composer/vendor/bin/drush: 
# Get the absolute path of this executable
SELF_DIRNAME="`dirname -- "$0"`"
+ dirname -- /home/user/.composer/vendor/bin/drush
+ SELF_DIRNAME=/home/user/.composer/vendor/bin
SELF_PATH="`cd -P -- "$SELF_DIRNAME" && pwd -P`/`basename -- "$0"`"
+ cd -P -- /home/user/.composer/vendor/bin
/home/user/.composer/vendor/bin/drush: 1: cd: can't cd to /home/user/.composer/vendor/bin
+ basename -- /home/user/.composer/vendor/bin/drush
+ SELF_PATH=/drush

+ 
: not found/.composer/vendor/bin/drush: 12: /home/user/.composer/vendor/bin/drush: 
# Decide if we are running a Unix Shell on Windows
if `which uname > /dev/null 2>&1`; then
  case "`uname -a`" in
/home/user/.composer/vendor/bin/drush: 15: /home/user/.composer/vendor/bin/drush: Syntax error: Word unexpected (expecting "in")

wut

Ok, vielleicht wird etwas Wonky mit uname -a Zurückgegeben? Die Antwort von meinem Server lautet:

Linux servername 3.2.0-58-generic #88-Ubuntu SMP Tue Dec 3 17:37:58 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

Es gibt keine Probleme mit der Verzeichnisberechtigung ... alles gehört dem Benutzer. Ich bin völlig ratlos. Ich habe versucht, Drush 5, 6 und 7 - jeweils die gleiche Art von Fehler.

Auf dem Server wird Ubuntu 12.04.2 LTS ausgeführt

7
jmking

Ich habe den gleichen Fehler erhalten, als ich Drush-Befehle auf einem Remotecomputer über einen Drush-Alias ​​ausgeführt habe. Ich könnte die gleichen Drush-Befehle ohne Probleme direkt auf dem Remote-System ausführen, aber wenn ich versuchen würde, sie über einen Drush-Alias ​​(@remotesystem) auszuführen, würde ich diesen Fehler erhalten.

Ich fand heraus, dass der Benutzer auf der Standard-Shell des Remote-Systems sh und nicht bash war. Da die Bash-Konfigurationsdatei ~/.bashrc die Zeile enthält, die die Position von Drush zum Pfad hinzufügt, konnte die sh-Shell drush nicht finden, da ~/.bashrc nicht nur von bash von der sh-Shell bezogen wird.

Die drush Installationsanweisungen auf docs.drush.org state:

Fügen Sie nun Drush zu Ihrem Systempfad hinzu, indem Sie den Export platzieren PATH = "$ HOME/.composer/vendor/bin: $ PATH" in Ihr ~/.bash_profile (Mac OS-Benutzer) oder in Ihr ~/.bashrc (Linux-Benutzer).

Sie können überprüfen, auf was Ihre aktuelle Shell eingestellt ist, indem Sie Folgendes ausführen:

 export | grep Shell

Dadurch wird eine Zeile mit Ihrer aktuellen Shell wie folgt gedruckt:

deklariere -x Shell = "/ bin/bash"

Unter Ubuntu ist die Standard-Shell sh, aber die Standard-Benutzer-Shell ist bash. Dies geschah bei einer Ubuntu Server-Installation (keine GUI).

Um dies zu beheben, ändern Sie Ihre Standard-Shell in Bash.

Führen Sie für aktuelle Benutzer Folgendes aus, um die Standard-Shell zu ändern:

Sudo -u <USERNAME> chsh -s /bin/bash

Wenn Sie für zukünftige Benutzer useradd verwenden, bearbeiten Sie die Skelettdatei/etc/default/useradd (vergessen Sie jedoch nicht, ein Backup zu erstellen). Ändern Sie die Zeile:

Shell =/bin/sh

zu

Shell =/bin/bash

Dadurch wird bash als Shell für neue Benutzer festgelegt, die erstellt werden.

4
frederickjh

Drush kann nicht gefunden werden, da $ PATH nicht den Pfad zu Drush angibt, sodass der Fehler env: drush: No such file or directory Ergebnisse. In der akzeptierten Antwort liegt dies daran, dass eine andere Shell verwendet wird, aber es gibt noch andere mögliche Ursachen und Lösungen.

Wenn Sie beispielsweise Drush auf einer Remote-Site über Drush-Aliase ausführen, kann es zu Problemen mit SSH und der nicht interaktiven Nichtanmeldung dieser Shell-Verbindung kommen. Wenn also Ihr $ PATH definiert ist ~/.bash_profile und es wird nicht geladen, Verschieben der $ PATH-Definition nach ~/.bashrc kann in diesem Fall eine Lösung sein.

1
alec

Mein Problem wurde dadurch verursacht, dass .bashrc von nicht interaktiven Shells nicht vollständig verarbeitet wurde https://stackoverflow.com/a/941995/980921

1
andyg5000

Um dieses spezielle Problem zu lösen, das ich auch hatte, müssen Sie lediglich eine drush-aliases - Konfiguration bereitstellen, wie im folgenden Beispiel gezeigt ...

$aliases['prod'] = array (
  'uri' => '...',
  'root' => '...',
  'remote-Host' => '...',
  'remote-user' => '...',
  'os' => '...',
  'path-aliases' => array(
    '%drush-script' => '/home/user/.composer/vendor/bin/drush', // <-- This is what you need
  ),
);

Danach müssen Sie möglicherweise den Cache mit drush cc drush Leeren und es erneut versuchen.

Das hat bei mir funktioniert.

0
asiby

Möglicherweise wird es durch Dos-Line-Endungen verursacht. Sie können das Problem beheben, indem Sie diese Datei drush in vim bearbeiten und ": set ff = unix" unter Bezugnahme auf Ihre Frage zu github ausführen

Wenn die oben genannte Lösungsdosis nicht funktioniert, versuchen Sie Folgendes:

Sudo mkdir /var/mysql
Sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock

Darüber hinaus müssen Sie möglicherweise Ihre php.ini-Einstellungen anpassen, bevor Sie drush erfolgreich verwenden können. hier ist die Referenz

0
rfegade

Wenn Sie sicher sind, dass der Pfad zu Drush korrekt ist, geben Sie die Ausführungsberechtigung für Drush-Binärdateien.

chmod a+x drush
0
Siva Epari

In meinem Fall entferne ich drush aus dem Verzeichnis vendor und es hat geholfen.

In meinem Pfad gab es viele Fälle von Drush.

0
Kristof