Scroll
Drush-ը ցույց է տալիս սխալ՝ աջակցել bash-ին՝ աջակցելու «source»-ին՝ fallback կատարելով $0-ի վրա, եթե սա չի աշխատում bash-ով:
Ես ունեմ հսկայական քանակությամբ կարգավորումներ և սովորաբար օգտագործում եմ config import հետևյալ կերպ՝ PHP-ի համար անջատելով հիշողության սահմանափակումը (memory_limit=-1)՝
php -d memory_limit=-1 ./vendor/bin/drush config-import -y
Բայց այս անգամ ստացա սխալ՝
# Աջակցել bash-ին, որպեսզի աշխատի `source`-ը fallback-ով $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 interpreter-ին վերլուծել bash սկրիպտ՝
php -d memory_limit=-1 ./vendor/bin/drush status
PHP-ն փորձում է կատարել առաջին ոչ-PHP տողը (# Աջակցել bash …
) և անմիջապես ավարտում է աշխատանքը՝ տպելով wrapper-ի կոդը էկրանին։ Դա է հենց այն արդյունքը, որը դուք ստացել եք։ Այս փոփոխությունը ներդրվել է Drush 13.3-ում և քննարկվել է վերին issue-ում՝ “Running drush as php script fails after updating from 13.2.0”