logo

Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Drush affiche une erreur : Supporter bash pour prendre en charge 'source' avec un repli sur $0 si cela ne s’exécute pas avec bash

21/06/2025, by Ivan

J’ai un très grand nombre de configurations et j’exécute généralement l’import de configuration avec php -d memory_limit=-1 (désactivation de la limite mémoire pour PHP) :

 php -d memory_limit=-1 ./vendor/bin/drush config-import -y

Mais cette fois, j’ai eu une erreur :
 

# Supporter bash pour prendre en charge `source` avec un repli sur $0 si cela ne s’exécute pas avec 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)/*)
            # Nous sommes sous Cygwin utilisant PHP Windows, donc le chemin doit être traduit
            dir=$(cygpath -m "$dir");
            ;;
    esac
fi

export COMPOSER_RUNTIME_BIN_DIR="$(cd "${self%[/\\]*}" > /dev/null; pwd)"

# Si bash source ce fichier, il faut aussi sourcer la cible
bashSource="$BASH_SOURCE"
if [ -n "$bashSource" ]; then
    if [ "$bashSource" != "$0" ]; then
        source "${dir}/drush" "$@"
        return
    fi
fi

"${dir}/drush" "$@"

Vous pouvez éviter cette erreur en passant memory_limit=-1 comme option PHP :

./vendor/bin/drush --php-options='-d memory_limit=-1' config-import -y

Pourquoi php -d memory_limit=-1 vendor/bin/drush … échoue maintenant

En forçant le fichier à passer via php, vous dites à l’interpréteur PHP d’analyser un script bash :

php -d memory_limit=-1 ./vendor/bin/drush status

PHP essaie alors d’exécuter la première ligne non-PHP (# Support bash …) et meurt immédiatement, affichant le contenu du wrapper à l’écran. C’est exactement ce que vous avez copié. Ce changement a été introduit dans Drush 13.3 et est discuté dans l’issue upstream « Running drush as php script fails after updating from 13.2.0 ».