logo

Дополнительные типы блоков (EBT) — новый опыт конструктора страниц❗

Дополнительные типы блоков (EBT) — стилизованные, настраиваемые типы блоков: слайдшоу, вкладки, карточки, аккордеоны и многие другие. Встроенные настройки для фона, DOM Box, плагины Javascript.

Демо EBT модули Скачать EBT модули

❗Дополнительные типы параграфов (EPT) — новый опыт работы с параграфами

Дополнительные типы параграфов (EPT) — набор модулей, основанный на аналогичных параграфах.

Демо EPT модули Скачать EPT модули

Scroll

Drush показывает ошибку: Поддержка bash для поддержки 'source' с использованием $0 в качестве резервного варианта, если это не выполняется с помощью bash

04/06/2025, by Ivan

У меня огромное количество конфигураций, и обычно я запускаю импорт конфигурации с помощью php -d memory_limit=-1 (отключить ограничение памяти для PHP):

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

Но в этот раз я получил ошибку:
 

# Поддержка bash для работы с `source` с резервным использованием $0, если скрипт не запущен через 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)/*)
            # Мы в Cygwin, используем Windows php, поэтому путь нужно преобразовать
            dir=$(cygpath -m "$dir");
            ;;
    esac
fi

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

# Если bash подключает этот файл через source, нужно подключить и целевой скрипт
bashSource="$BASH_SOURCE"
if [ -n "$bashSource" ]; then
    if [ "$bashSource" != "$0" ]; then
        source "${dir}/drush" "$@"
        return
    fi
fi

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

Этой ошибки можно избежать, если передавать memory_limit=-1 через php-options:

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

Почему php -d memory_limit=-1 vendor/bin/drush … теперь вызывает ошибку

Когда вы явно запускаете файл через php, вы указываете интерпретатору PHP выполнить bash-скрипт:

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

PHP добросовестно пытается выполнить первую не-PHP строку (# Поддержка bash …) и сразу завершается с ошибкой, выводя исходный код-обертку на экран. Это именно тот вывод, который вы получили. Это изменение было введено в Drush 13.3 и обсуждается в upstream-issue “Running drush as php script fails after updating from 13.2.0”