संगीतकार अद्यतन स्मृति सीमा


85

मुझे अपने होस्टिंग पर संगीतकार अपडेट चलाने की आवश्यकता है, इसलिए मैं ssh के साथ लॉग इन करता हूं और कॉमैंड चलाने की कोशिश करता हूं:

composer update

अंदर / www फ़ोल्डर जहां मेरे पास लार्वा और संगीतकार इंस्टालेशन है

लेकिन मुझे त्रुटि मिली: यहां छवि विवरण दर्ज करें

मेरे होस्टिंग प्रदाता के संपर्क में वे मुझे कमांड चलाने के लिए कहते हैं:

php -d memory_limit=512M composer update

मैं यह कमांड चलाता हूं लेकिन मुझे यह मिलता है: "फाइल नहीं खोल सका: संगीतकार"

क्या करें? यहाँ विलेय क्या है?


2
जैसा @Sven ने कहा, उत्पादन composer installमें पर्याप्त है। आपके मामले में, साझा होस्टिंग का उपयोग करते समय, मुझे लगता है कि आपको composer updateकाम नहीं मिलेगा , इसलिए एकमात्र तरीका डिजिटल महासागर, लिनोड जैसे वीपीएस होस्टिंग खरीदना है।
लुकास सिल्वा

जवाबों:


131

जब आप चलते हैं composer update, तो ओएस कॉन्फ़िगर किए गए रास्तों पर गौर करेगा और उस नाम के साथ एक निष्पादन योग्य फ़ाइल खोजने की कोशिश करेगा।

दौड़ते समय php composer update, composerस्ट्रिंग को PHP के पैरामीटर के रूप में माना जाता है, जिसे किसी भी पथ में नहीं खोजा जाता है। इसे चलाने के लिए आपको पूरा रास्ता देना होगा।

रनिंग which composerआपको बताएगा कि ओएस संगीतकार को निष्पादन योग्य कहां पाता है, और फिर आप बस PHP कमांड में पूर्ण पथ का उपयोग करते हैं:

$>which composer
/usr/local/bin/composer

$>php -d memory_limit=512M /usr/local/bin/composer update
...

ध्यान दें कि 512MB बहुत कम हो सकता है। मेरी धारणा यह है कि आपके द्वारा उपयोग की जाने वाली निर्भरता की संख्या और आपके द्वारा सैद्धांतिक रूप से अनुमति देने वाले संस्करणों की विविधता के आधार पर, यह 1GB या अधिक खुशी से ले जाएगा, अर्थात यदि आप Symfony की अनुमति देते हैं ~2.3, तो आप उपयोग करने की तुलना में बहुत अधिक संभावित संस्करणों के साथ संगीतकार सौदा करते हैं। ~2.7

यह भी ध्यान दें कि उत्पादन मशीन पर कम्पोज़र चलाना सबसे अच्छा विचार नहीं है। आपको Github तक पहुंच प्राप्त करनी होगी, हो सकता है कि एक्सेस क्रेडेंशियल्स प्रदान करें, VCS टूल इंस्टॉल किए हों, और यदि आपकी अपडेट के दौरान दूरस्थ होस्टिंग सर्वरों में से कोई भी ऑफ़लाइन है, तो आप आसानी से अपनी साइट को तोड़ देंगे। कंपोज़र को एक परिनियोजन प्रणाली पर उपयोग करने के लिए एक बेहतर विचार है जो सभी तैयारी करता है, और फिर सभी फ़ाइलों को उत्पादन सर्वर पर ले जाता है।

अपडेट करें

यह अब वर्ष 2020 है, और जिस तरह से संगीतकार ने अपनी मेमोरी का प्रबंधन किया है वह काफी बदल गया है। सबसे महत्वपूर्ण बात यह है कि अगर यह सीमा बहुत कम हो जाती है, तो कम्पोज़र मेमोरी की सीमा को अपने आप बढ़ा देगा। हालांकि यह तुरंत उन मशीनों पर मेमोरी से बाहर चलने की समस्या को ट्रिगर करता है जिनमें बहुत कम मेमोरी स्थापित है। आप पर्यावरण चर की तरह सेटिंग करके कम मेमोरी का उपयोग कर सकते हैं COMPOSER_MEMORY_LIMIT=512M, लेकिन यह समस्याएँ पैदा करेगा अगर कम्पोज़र को सही ढंग से संचालित करने के लिए अधिक मेमोरी की आवश्यकता होगी।

मेरी मुख्य बात सच है: उन मशीनों पर कंपोज़र न चलाएं जिनमें बहुत कम मेमोरी स्थापित है। आपको संभावित रूप से 1.5 जीबी मुफ्त मेमोरी की आवश्यकता है ताकि सब कुछ अपडेट किया जा सके।


मैं सिर्फ wite: php -r " readfile (' getcomposer.org/installer' );" | php और उसके बाद सब कुछ ठीक चलता है ... THANS FOR HELP
एंड्रयू

34
php -d memory_limit=-1 $(which composer) updateसंगीतकार पथ को निर्दिष्ट करने की कोई आवश्यकता नहीं होने के कारण अधिक सुविधाजनक है।
Rax

1
यह भी खूब रही। मुझे नहीं पता था कि आप एक ही कमांड के लिए मेमोरी बढ़ा सकते हैं। यही वह सही कर रहा है?
plushyObject

खिड़कियों में कैसे?
रे

1
@ एक और बात, अगर आप इस कमांड को विंडोज़ पर mingw पर चला रहे हैं, तो आपको एक त्रुटि मिलेगी कि इस मार्ग का अनुवाद करना होगा इसलिए इस कमांड का उपयोग करेंphp -d memory_limit=-1 $(which composer).phar update
Faizan

140

इसे जितनी मेमोरी के साथ उपयोग करना है उतना सेट करें:

COMPOSER_MEMORY_LIMIT=-1 composer update

हम इस मूल्य या किसी भी मूल्य को विश्व स्तर पर कैसे निर्धारित कर सकते हैं? सीएलआई के माध्यम से हर बार ऐसा करने के बजाय?
snh_nl

@snh_nl आपको php मेमोरी लिमिट सेट करने की आवश्यकता होगी। उदाहरण: Chapterthree.com/blog/how-fix-composer-memory-issue
jasonflaherty

2
इसे अपने / etc / प्रोफाइल (या जो भी शेल आप उपयोग करते हैं) में विश्व स्तर पर परिभाषित करें COMPOSER_MEMORY_LIMIT=-1; export COMPOSER_MEMORY_LIMIT। या इसे एक शेल उर्फ ​​परिभाषित करें? alias memcomposer='COMPOSER_MEMORY_LIMIT=-1 composer', तो का उपयोग memcomposerकरने के बजायcomposer
diamondsea

यह अभी भी कहता हैFatal error: Allowed memory size of 2147483648 bytes exhausted (tried to allocate 4096 bytes) in phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52
ओज़ान कर्ट

15

मैं संगीतकार के साथ समस्याओं का सामना कर रहा हूं क्योंकि यह सभी उपलब्ध मेमोरी का उपभोग करता है, और फिर, प्रक्रिया को मार दिया जाता है (वास्तविक, आउटपुट संदेश "किल्ड" है)

इसलिए, मैं संगीतकार मेमोरी उपयोग को सीमित करने के लिए एक समाधान की तलाश कर रहा था।

मैंने कोशिश की (@ उत्तर से)

$ php -d memory_limit=512M /usr/local/bin/composer update

लेकिन यह काम नहीं किया क्योंकि

"संगीतकार आंतरिक रूप से memory_limit को 1.5G तक बढ़ा देता है।"

-> अवशिष्ट वेबसाइट के संगीतकार।

फिर मुझे एक कमांड मिली जो काम करती है:

$ COMPOSER_MEMORY_LIMIT=512M php composer.phar update

सोचा, मेरे मामले में 512mb पर्याप्त नहीं है!

स्रोत: https://www.agileana.com/blog/composer-memory-limit-troublesourcing/


1
मुझे इस तरह से संगीतकार का उपयोग करना पड़ा: COMPOSER_MEMORY_LIMIT = 1024M संगीतकार को 'मॉड्यूल' की आवश्यकता होती है
jasonflaherty

1
इसी तरह, मैंने इस्तेमाल कियाCOMPOSER_MEMORY_LIMIT=-1 composer require <package name>
realtebo

12

मुझे गठबंधन करना था COMPOSER_MEMORY_LIMITऔर memory_limitकमांड लाइन में:

विंडोज पर:

set COMPOSER_MEMORY_LIMIT=99999999999&& php -d memory_limit=-1 composer.phar update

लिनक्स पर:

export COMPOSER_MEMORY_LIMIT=99999999999 && php -d memory_limit=-1 composer.phar update

यह केवल एक है जो मेरे लिए मैक ओएस एक्स एल कैपिटन पर काम कर रहा है।
ymd_

मेरे लिए काम किया, धन्यवाद
Sayydika

8

अगर वहाँ पर्याप्त मेमोरी संगीतकार आंतरिक रूप से इसका उपभोग करेगा और बिना किसी समस्या के चलाएगा। संगीतकार को इसे करने के लिए विशेष रूप से बताने की आवश्यकता नहीं है।

क्या आपने अपनी स्वैप मेमोरी बढ़ाने की कोशिश की है, coz यह मेरे लिए काम करती है। मैंने स्वैप मेमोरी को 4096Mb (4GB) तक बढ़ा दिया है और अब यह सब मुझे बहुत अच्छा लगता है।

sudo freeउपलब्ध मेमोरी और स्वैप मेमोरी देखने के लिए पहले " " का उपयोग करें । और स्वैप को इस रूप में कॉन्फ़िगर करें,

डेबियन के लिए:

sudo fallocate -l 4G /swapfile
sudo dd if=/dev/zero of=/swapfile bs=4096k count=1048
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

इसे अनुमति देने के लिए इसे / etc / fstab फ़ाइल में जोड़ें, /swapfile swap swap defaults 0 0

CentOS के लिए:

[root@myserver]:/# cd /var
[root@myserver]:/var# touch swap.img
[root@myserver]:/var# chmod 600 swap.img
[root@myserver]:/var# mkswap /var/swap.img

[root@myserver]:/var# dd if=/dev/zero of=/var/swap.img bs=4096k count=1000
[root@myserver]:/var# mkswap /var/swap.img 
[root@myserver]:/var# swapon /var/swap.img

आप अपनी भौतिक मात्रा के आकार के आधार पर परिवर्तनशील bs = 1024k या 2048k या 8096k द्वारा अपनी स्वैप मेमोरी बढ़ा सकते हैं। अंतर देखने के लिए स्वेपन ’और स्वेपॉफ कमांड का उपयोग करें।

'स्वैगनेस' जांचें (60 अच्छा करना चाहिए,)

cat /proc/sys/vm/swappiness

4

आप memory_limitअपने php.ini में मान बदल सकते हैं

अपनी php.ini फ़ाइल में सीमा बढ़ाने का प्रयास करें

असीमित के लिए -1 का उपयोग करें या 2 जी जैसे स्पष्ट मूल्य को परिभाषित करें

memory_limit = -1

नोट: संगीतकार आंतरिक रूप से memory_limit को 1.5G तक बढ़ा देता है।

प्रलेखन getcomposer.org पढ़ें


3

मैक ओएस हाई सियरा पर मैं नीचे भागा:

MacBook-Pro:asiu jack$ php --ini

लौटाया हुआ:

Configuration File (php.ini) Path: /usr/local/etc/php/7.4
Loaded Configuration File:         /usr/local/etc/php/7.4/php.ini
Scan for additional .ini files in: /usr/local/etc/php/7.4/conf.d
Additional .ini files parsed:      /usr/local/etc/php/7.4/conf.d/ext- 
opcache.ini,
/usr/local/etc/php/7.4/conf.d/php-memory-limits.ini

ऊपर दिए गए सभी उत्तर लोड किए गए कॉन्फिगरेशन को सेट कर रहे हैं, जो अपडेट करता है, लेकिन अतिरिक्त .ini फाइलों को ध्यान में रखते हुए एक अलग फाइल के रूप में php-memory-limit.ini है। आपको इस फ़ाइल को मेमरी सीमा के साथ भी अपडेट करना होगा। उसी तरह से टेक्स्ट एडिटर में खुलते हैं और 2 जी की तरह कुछ बदल जाते हैं। मेमोरी सीमा विफलता पर आउटपुट आपको यह बताना चाहिए कि इसे चलाने के लिए कितनी मेमोरी की आवश्यकता है, बस इसे असीमित से अधिक या -1 के लिए सेट करें।


2

यह त्रुटि विशेष रूप से तब हो सकती है जब आप बड़े पुस्तकालयों या पुस्तकालयों को बहुत अधिक निर्भरता के साथ अद्यतन कर रहे हों। संगीतकार काफी मेमोरी भूखा हो सकता है।

सुनिश्चित करें कि आपका संगीतकार स्वयं नवीनतम संस्करण में अपडेट किया गया है:

php composer.phar --self-update

आप संगीतकार मेमोरी सीमा पर्यावरण चर जोड़कर संगीतकार के लिए मेमोरी सीमा अस्थायी रूप से बढ़ा सकते हैं:

COMPOSER_MEMORY_LIMIT=128MB php composer.phar update

मेगाबाइट के लिए प्रारूप "128M" या गीगाबाइट के लिए "2G" का उपयोग करें। आप स्मृति सीमा को पूरी तरह से अनदेखा करने के लिए "-1" मान का उपयोग कर सकते हैं।

PHP मेमोरी लिमिट बढ़ाने का एक और तरीका होगा:

php -d memory_limit=512M composer.phar update ...

2

मेरे लिए सबसे अच्छा उपाय है

COMPOSER_MEMORY_LIMIT=-1 composer require <package name>

@realtebo द्वारा उल्लेख किया गया है


1

आपका aws सर्वर कितना बड़ा है? यदि इसमें केवल 1GB RAM है, तो php.ini में 2gb की मेमोरी लिमिट सेट करने से मदद नहीं मिलेगी।

यदि आप अधिक RAM उपलब्ध करवाने के लिए सर्वर साइड को बढ़ाना भी नहीं चाहते / कर सकते, तो आप SWAP को भी सक्षम कर सकते हैं।

स्वैप सक्षम करने के लिए यहां देखें यह 4 जीबी सक्षम करता है, हालांकि मैं आमतौर पर केवल 1 जीबी ही करता हूं।

स्रोत: लार्कास्ट साइट से मिला


0

मेरे मामले में किसी भी उत्तर ने मदद नहीं की। अंत में यह पता चला, कि PHP (M $ Windows) के 64 बिट संस्करण में बदलने से समस्या तुरंत ठीक हो गई। मैंने कोई सेटिंग नहीं बदली - बस काम किया।


0

मैंने विडोज़ 10 पर इसे बनाया और मेरे साथ काम किया:

php -d memory_limit=-1 C:/ProgramData/ComposerSetup/bin/composer.phar update

आप चाहते हैं कि xx मान बदल सकते हैं

 memory_limit=XX

0

मैं होमस्टेड के साथ लारवेल 6 चला रहा हूं और इस समस्या में भाग गया। जैसा कि यहाँ अन्य उत्तरों में सुझाया गया है, आप COMPOSER_MEMORY_LIMIT=-1किसी एकल कमांड में उपसर्ग कर सकते हैं और कमांड को सामान्य रूप से चला सकते हैं। यदि आप अपने PHP कॉन्फिगरेशन को हमेशा अपडेट करना चाहते हैं तो असीमित मेमोरी को इन चरणों का पालन करें।

vagrant up
vagrant ssh
php --version # 7.4
php --ini # Shows path to the php.ini file that's loaded
cd /etc/php/7.4/cli # your PHP version. Each PHP version has a folder
sudo vi php.ini

memory_limit=-1अपनी php.ini फ़ाइल में जोड़ें । अगर आपको Vim का उपयोग करने में कठिनाई हो रही है या php.ini फ़ाइल में संपादन करने में कठिनाई हो रही है, तो इस उत्तर की जाँच करें कि कैसे Vp के साथ php.ini फ़ाइल को संपादित करें। फ़ाइल कुछ इस तरह दिखनी चाहिए:

; Maximum amount of memory a script may consume
; http://php.net/memory-limit
memory_limit = -1

ध्यान दें कि यह आपकी मशीन पर अनंत मात्रा में मेमोरी खा सकता है। शायद उत्पादन के लिए एक अच्छा विचार नहीं है। लारवेल वैलेट को इस लेख का अनुसरण करना था और यहाँ पर स्मृति मूल्य को अद्यतन करना था:

sudo vi /usr/local/etc/php/7.4/conf.d/php-memory-limits.ini

फिर वैलेट के साथ सर्वर को पुनरारंभ करें:

valet restart

यह उत्तर मैक पर लारवेल वैलेट के साथ विन्यास को बदलने के लिए भी सहायक था ताकि परिवर्तन प्रभावी हो।





0

लारवेल के लिए

चरण 1. अपना टर्मिनल खोलें

चरण 2. cdअपने लार्वा निर्देशिका में

चरण 3. which composerअपने लार्वा निर्देशिका में कमांड टाइप करें , और उस निर्देशिका को नोट करें जिसमें संगीतकार रहता है।

चरण 4. कमांड चलाएं php -d memory_limit=-1 /opt/cpanel/bin/composer update(यदि यह आपके लिए काम करता है तो आप कोड भी चला सकते हैं)

( /opt/cpanel/bin/composerचरण 3 में दी गई निर्देशिका पथ में परिवर्तन )

समस्या सुलझ गयी


-1

मेरे मामले में इस मेमोरी लिमिट के बढ़ने के साथ उच्च अनुमतियों की आवश्यकता थी।

sudo COMPOSER_MEMORY_LIMIT=2G php /opt/bitnami/php/bin/composer.phar update

कंपोज़र को चलाना sudoएक अच्छा विचार नहीं है, क्योंकि यह आपकी अनुमतियों को मिला देगा। ऐसा लगता है कि आप composer updateएक सर्वर पर चल रहे हैं - यह भी बुरा अभ्यास है, क्योंकि यह संस्करण नियंत्रण के तहत गणना की गई निर्भरता को डालने के लिए बहुत अधिक अलग करेगा
निको हेस

@NicoHaase से सहमत, आपको इसका उपयोग करने में बहुत सावधानी बरतने की आवश्यकता है! धन्यवाद।
नासर निकज़ाद
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.