Drush त्रुटि दिखाता है: 'source' को सपोर्ट करने के लिए bash का समर्थन करें, और यदि यह bash के साथ नहीं चलता है तो $0 पर फ़ॉलबैक करें
मेरे पास बहुत बड़ी संख्या में कॉन्फ़िग फाइलें हैं और मैं आमतौर पर PHP के लिए मेमोरी लिमिट अक्षम करने के लिए निम्न कमांड का उपयोग करता हूँ:
php -d memory_limit=-1 ./vendor/bin/drush config-import -y
लेकिन इस बार मुझे एक त्रुटि प्राप्त हुई:
# 'source' को सपोर्ट करने के लिए bash का समर्थन करें, और यदि यह bash के साथ नहीं चलता है तो $0 पर फ़ॉलबैक करें
# 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)/*)
dir=$(cygpath -m "$dir");
;;
esac
fi
export COMPOSER_RUNTIME_BIN_DIR="$(cd "${self%[/\\]*}" > /dev/null; pwd)"
bashSource="$BASH_SOURCE"
if [ -n "$bashSource" ]; then
if [ "$bashSource" != "$0" ]; then
source "${dir}/drush" "$@"
return
fi
fi
"${dir}/drush" "$@"
आप इस त्रुटि से बच सकते हैं यदि आप --php-options
के माध्यम से memory_limit=-1
पास करें:
./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 लाइन (# Support bash …
) को निष्पादित करने का प्रयास करता है और तुरंत क्रैश हो जाता है, जिससे स्क्रिप्ट का स्रोत स्क्रीन पर प्रदर्शित होता है — ठीक वही आउटपुट जो आपने देखा।
यह बदलाव Drush 13.3 में पेश किया गया था और अपस्ट्रीम इश्यू “Running drush as php script fails after updating from 13.2.0” में इसका उल्लेख है।