Scroll
Drush показывает ошибку: Поддержка bash для поддержки 'source' с использованием $0 в качестве резервного варианта, если это не выполняется с помощью bash
У меня огромное количество конфигураций, и обычно я запускаю импорт конфигурации с помощью 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”