[gelöst] Drush cr - kryptische Meldung - Wer kann mir das "übersetzen"
Eingetragen von Martin Gr. (237)
am 15.11.2024 - 13:08 Uhr in
am 15.11.2024 - 13:08 Uhr in
Bin wieder auf ein Rätsel gestossen und bitte um sachdienliche Hinweise.
Nach Übersiedelung eines D10 Projekts zu einer anderen Domain erhalte ich beim drush cr Aufruf folgende Meldung und werde nicht schlau daraus. Der composer funktioniert normal, aber drush nicht. Wie kann ich das deuten bzw. reparieren?
Danke euch!
# Support bash to support `source` with fallback on $0 if this does not run with bash
# https://stackoverflow.com/a/35006505/6512
selfArg="$BASH_SOURCE"
if [ -z "$selfArg" ]; then
selfArg="$0"
fi
self=$(realpath $selfArg 2> /dev/null)
if [ -z "$self" ]; then
self="$selfArg"
fi
dir=$(cd "${self%[/\\]*}" > /dev/null; cd '../drush/drush' && pwd)
if [ -d /proc/cygdrive ]; then
case $(which php) in
$(readlink -n /proc/cygdrive)/*)
# We are in Cygwin using Windows php, so the path must be translated
dir=$(cygpath -m "$dir");
;;
esac
fi
export COMPOSER_RUNTIME_BIN_DIR="$(cd "${self%[/\\]*}" > /dev/null; pwd)"
# If bash is sourcing this file, we have to source the target as well
bashSource="$BASH_SOURCE"
if [ -n "$bashSource" ]; then
if [ "$bashSource" != "$0" ]; then
source "${dir}/drush" "$@"
return
fi
fi
exec "${dir}/drush" "$@"
- Anmelden oder Registrieren um Kommentare zu schreiben
Wenn Du auf der Kommandozeile
am 15.11.2024 - 17:47 Uhr
Wenn Du auf der Kommandozeile env aufrufst, was steht in der Zeile in der Du SHELL findest?
Hallo Werner
am 15.11.2024 - 19:15 Uhr
in der Zeile mit SHELL beginnend steht: SHELL=/bin/bash
Das ganze Ergebnis bei Eingabe von "env" lautet:
-bash-4.2$ env
NVM_INC=/var/www/vhosts/meinserver.de/.nvm/versions/node/v14.21.3/include/node
XDG_SESSION_ID=c3509850
HOSTNAME=meinserver.de
NVM_CD_FLAGS=
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=185.17.14.8 51488 22
SSH_TTY=/dev/pts/0
NVM_DIR=/var/www/vhosts/meinserver.de/.nvm
USER=dingsda
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:dingsda dings
PATH=/var/www/vhosts/meinserver.de/.nvm/versions/node/v14.21.3/bin:/opt/plesk/php/8.3/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
PWD=/var/www/vhosts/meinserver.de/meinedomain.at
HISTCONTROL=ignoredups
SHLVL=1
HOME=/var/www/vhosts/meinserver.de
LOGNAME=dingsdaxx
SSH_CONNECTION=185.xx.xx.xx 51488 31.47.253.141 22
NVM_BIN=/var/www/vhosts/meinserver.de/.nvm/versions/node/v14.21.3/bin
LESSOPEN=||/usr/bin/lesspipe.sh %s
XDG_RUNTIME_DIR=/run/user/10196
OLDPWD=/var/www/meinserver.de
_=/usr/bin/env
Bevor ich's vergesse: Zwischenzeitlich hat auch der support geantwortet, welchen Pfad ich für PHP 8.3 verwenden soll - vielleicht hängt das mit diesem Problem zusammen. Ich hatte mir den Pfad ja selbst in der .bshrc "zurechtgeschustert" und damit immerhin php 83 zum Laufen gebracht. Das war im Blindflug.
Also der support meint:
Um PHP 8.3 in der Shell nutzen zu können, verwenden Sie bitte den folgenden Befehl: /opt/plesk/php/8.3/bin/php. Damit greifen Sie direkt auf die gewünschte PHP-Version zu, ohne zusätzliche Anpassungen wie in der .bashrc vornehmen zu müssen.
Das sieht alles normal aus.
am 15.11.2024 - 23:22 Uhr
Das sieht alles normal aus. Wie rufst Du drush auf?
Ich rufe drush, bitte kommen...
am 16.11.2024 - 11:02 Uhr
Also ich hatte es immer mit
drush cr
aufgerufen. In allen anderen Projekten im selben webspace geht das klaglos. Nur das eine hier will nicht. Es kommt die oben zitierte Fehlermeldung die ich nicht verstehe. Nur mal geraten, hab ich etwas mit dem Installationspfad von drush vermurxt?
Was war davor? Ein mißlungener update Versuch der Seite, von drush selbst und die Rückkehr zum alten Modus. Da dürfte es passiert sein.
Drush deinstallieren und neu installieren?
Das scheint das Problem zu
am 16.11.2024 - 19:13 Uhr
Das scheint das Problem zu sein. Zu Zeiten von Drupal 7 gab es noch ein globales Drush. Ab den späten Drupal 8-Versionen geht nur noch ein lokales Drush im oberen Verzeichnis, also auf der Ebene, oberhalb vom web-Verzeichnis. Installiert wird Drush mittels composer (composer require drush/drush) und aufgerufen mittels vendor/bin/drush. Dann sollten auch keine Fehlermeldungen auftreten.
Danke jetzt funzt es
am 16.11.2024 - 20:05 Uhr
Hast du noch Nerv für eine Fleissaufgabe:
Wie erspare ich mir das vendor/bin/drush Geschreibe?
In den anderen Projekten kann ich drush nur mit drush cr betätigen?
Eine Ahnung hab ich vielleicht: muß ich eine eigene my_bin anlegen und es dort verscripten? Aber wie?
LG Martin
Du könntest in der
am 17.11.2024 - 13:30 Uhr
Du könntest in der .bashrc-Datei in Deinem Home-Verzeichnis drush als Alias für vendor/bin/drush definieren. Aber Achtung Drush funktioniert auch dann nur im Verzeichnis oberhalb von web.
Ich habe auf meinem System (einem Mac) ein Tool. mir dem ich beliebige Abkürzungen definieren kann. Die funktionieren dann bei allen Eingabefeldern oder Terminalfenstern. So habe ich unter andrem '.vbd' für 'vendorbin/drush' und '.crd' für 'composer require drupal/'.
Danke
am 19.11.2024 - 09:19 Uhr
werde ich versuchen
Das liegt am neuen Wrapper-Script von Drush
am 10.12.2024 - 17:47 Uhr
Gab es bei dem "Umzug" auch ein Update von Drush?
Denn ab ca. Drush 12.3 (genau weiß ich es gerade nicht), wird unter "vendor/bin/drush" ein neues Wrapper shell script eingesetzt. Das ist das was da auch angezeigt und eben nicht ausgeführt wird. Somit ist es keine Fehlermeldung im eigentlich Sinn.
Das Problem tauchte auch mit unserem hauseigenem Bash-Hilfscript auf das damit dann auch nicht mehr funktionierte. Allerdings funktionierte bei uns noch der direkt Aufruf von vendor/bin/drush. In unserem Hilfsscript wird Drush ohnehin direkt mit voran gestelltem PHP Commandline Pfad aufgerufen. Somit haben wir das umgangen, in dem nun drush.php direkt aufgerufen wird. In neueren Versionen liegt auch ein Kopie unter vendor/bin/drush.php ansonsten unter vendor/drush/drush/drush.php. Das wird nicht in jedem Fall ein Lösung sein, da es dieses Wrapper-Script ja wohl nicht ohne Grund gibt.
Interessant
am 10.12.2024 - 19:18 Uhr
ja ich kann bei den Projekten auch mit vendor/bin/drush eben drush aufrufen. Bei ein paar geht es noch mit der "Abkürzung" über das bash script. Bei anderen taucht die Meldung auf.
Neues wrapper script startet mit "sh" und nicht "bash"
am 11.12.2024 - 12:10 Uhr
Hallo Martin,
ja ich kann bei den Projekten auch mit vendor/bin/drush eben drush aufrufen. Bei ein paar geht es noch mit der "Abkürzung" über das bash script. Bei anderen taucht die Meldung auf.
Das Problem liegt glaube ich darin, daß das neue "vendor/bin/drush" "wrapper"-script nicht mehr direkt zu php "wechselt" mit
#!/usr/bin/env php
sondern mit#!/usr/bin/env sh
. Das ist eben nicht bash und dort steht ja auch als Kommentar, daß es eine Fallback Strategie ist, wenn man kein bash nutzt. Der Nachteil für noch mal darum gelegte Bash Strategien, ist dann wohl, daß diese irgendwie angepasst werden müssen. Wie oben schon grob umrissen kann man in einem Bash Script Drush auch auch mit /pfad/zu/php /pfad/zu/drush.php aufrufen.