आवश्यकता (विक्रेता / autoload.php): स्ट्रीम खोलने में विफल


130

मुझे पता है कि इस मुद्दे को कई बार पोस्ट किया गया है, लेकिन मेरे लिए यह एक अलग समस्या है।

दरअसल, यह त्रुटि

चेतावनी: आवश्यकता है (विक्रेता / autoload.php): स्ट्रीम खोलने में विफल: C: \ xampp \ htdocs \ site_web \ send_mail.php पंक्ति 3 में कोई फ़ाइल या निर्देशिका नहीं

घातक त्रुटि: आवश्यकता (): आवश्यक वेंडर खोलने में 'विक्रेता / autoload.php' (शामिल_path = 'C: \ xampp \ php \ PEAR') C: \ xampp \ htdocs \ site \web \ send_mail.php पंक्ति 3 पर

इस लाइन से मेरे कोड की भीख माँगता है:

require 'vendor/autoload.php';

तो, मुझे लगता है कि मेरे कंप्यूटर में कहीं एक /vendor/autoload.php फ़ाइल होनी चाहिए (मैंने संगीतकार स्थापित किया है और भाग गया composer require phpmailer/phpmailer)।

तो, मैं इस फ़ाइल का उपयोग कर के लिए देखा: dir /s autoload.phpविंडोज कमांड लाइन में, और एक पाई गई: C:\Windows\SysWOW64\vendor\autoload.php,

लेकिन मेरे लिए, syswow64 फ़ोल्डर में autoload.php के साथ देखने के लिए कुछ भी नहीं है , मैं नहीं देखता कि मैं यहां क्या याद कर रहा हूं।


यह तब भी हो सकता है जब आपके पास पहले से इंस्टॉल किए गए स्क्रिप्ट सेक्शन में अपने कंपोजर.जॉन फाइल में php कारीगर हो या ऊपर। ऐसा लगता है कि रखरखाव मोड को निष्पादित करने के लिए विक्रेता फ़ोल्डर में फ़ाइलों की आवश्यकता है, जो अभी तक उपलब्ध नहीं है।
थॉमस

जवाबों:


233

जो आप याद कर रहे हैं वह चल रहा है composer install, जो आपके पैकेज को आयात करेगा और ऑटोलॉड स्क्रिप्ट के साथ वेंडर फ़ोल्डर बनाएगा।

सुनिश्चित करें कि आपका सापेक्ष मार्ग सही है। उदाहरण के लिए PHPMailer में स्क्रिप्ट स्क्रिप्ट examples/प्रोजेक्ट रूट के नीचे है, इसलिए संगीतकार ऑटोलैडर को वहां से लोड करने के लिए सही सापेक्ष पथ होगा ../vendor/autoload.php

आपके द्वारा पाया गया C:\Windows\SysWOW64\vendor\autoload.phpऑटोलैड.फैप संभवत: एक वैश्विक कंपोज़र इंस्टॉलेशन है - जहां आप आमतौर पर phpcs, phpunit, phpmd आदि जैसी चीजें डालते हैं।

composer updateएक ही बात नहीं है, और शायद वह नहीं जो आप उपयोग करना चाहते हैं। यदि आपका कोड आपके वर्तमान पैकेज संस्करणों के साथ परीक्षण किया जाता है, तो रनिंग में updateटूट-फूट हो सकती है जिसके लिए आगे काम और परीक्षण की आवश्यकता हो सकती है, इसलिए updateतब तक न चलाएं जब तक कि आपके पास कोई विशिष्ट कारण न हो और समझें कि वास्तव में इसका क्या अर्थ है। आगे स्पष्ट करने के लिए - आपको शायद कभी भी composer updateस्थानीय रूप से चलना चाहिए , कभी अपने सर्वर पर नहीं क्योंकि इससे उत्पादन में ऐप्स के टूटने की संभावना है।

मैं अक्सर शिकायतें देखता हूं कि लोग संगीतकार का उपयोग नहीं कर सकते क्योंकि वे इसे अपने सर्वर पर नहीं चला सकते हैं (उदाहरण के लिए क्योंकि यह साझा है और उनके पास शेल एक्सेस नहीं है)। उस स्थिति में, आप अभी भी कंपोज़र का उपयोग कर सकते हैं : इसे स्थानीय रूप से चलाएं (ऐसा वातावरण जिसमें कोई प्रतिबंध नहीं है), और स्थानीय विक्रेता फ़ोल्डर को अपलोड करें जो आपके सभी अन्य PHP लिपियों के साथ उत्पन्न होता है।

रनिंग composer update भी एक प्रदर्शन करता है composer install, और यदि आपके पास वर्तमान में एक vendorफ़ोल्डर नहीं है (यानी आपके पास एक परियोजना का नया चेकआउट है), तो composer installप्रभावी रूप से एक प्रदर्शन करता है composer update, लेकिन दोनों के बीच के अंतर को समझना अभी भी महत्वपूर्ण है क्योंकि वे निश्चित रूप से विनिमेय नहीं हैं

ध्यान दें कि एकल पैकेज को नामांकित करके अद्यतन करना भी संभव है, उदाहरण के लिए:

composer update ramsey/uuid

यह आपके द्वारा निर्दिष्ट संस्करण को फिर से हल करेगा composer.jsonऔर इसे आपके विक्रेता फ़ोल्डर में स्थापित करेगा, और आपकी composer.lockफ़ाइल को मिलान करने के लिए अपडेट करेगा । composer updateयदि आपको एक पैकेज के लिए एक विशेष अपडेट की आवश्यकता है, तो यह सामान्य से कम समस्याएं पैदा करने की संभावना है ।

संगीतकार 2.0 (जल्द ही बाहर) स्थापित और अद्यतन परिणामों के बीच किसी भी शेष विसंगतियों को दूर करना चाहिए।


1
मैं कंपोज़र इंस्टॉल कैसे चलाऊं? यह एक कमांड के रूप में मान्यता प्राप्त नहीं है
Yvonne Aburrow

धन्यवाद, पाया कि, और इसे डाउनलोड किया है - लेकिन यह मुझसे पूछता है कि PHP स्थानीय रूप से कहाँ स्थापित है। मैं वास्तव में PHP को स्थानीय स्तर पर स्थापित नहीं करना चाहता (या संगीतकार) मैं इसे केवल अपने Google क्लाउड ऐप पर चलाना चाहता हूं।
यवोन एबुरो

मैं इस दस्तावेज के बिट में यहां कदम
रख रहा हूं

1
PHP के लिए Google क्लाउड अपनी निर्भरता स्थापित करने के लिए संगीतकार प्रदान करता है, आपको बस इसे सेट करने की आवश्यकता है, यहां देखें: Cloud.google.com/appengine/docs/flexible/php/…
Synchro

2
हां, Google क्लाउड को चलाने की आवश्यकता होगी composer installऔर यह तब आपकी composer.jsonफ़ाइल की सामग्री को पढ़ेगा और आपके सभी निर्भरता को vendorफ़ोल्डर में स्थापित करेगा । यदि ऐसा नहीं हो रहा है, तो मैं केवल उन डॉक्स को पढ़ने का सुझाव दे सकता हूं जिन्हें मैंने बताया था और यह सब डबल-चेक किया था। यह वास्तव में "अपलोड" और "परिनियोजन" के बीच अंतर है।
सिंक्रो

40

यदि आपको चलाते समय भी त्रुटि मिलती है

composer install

बस पहले इस कमांड को रन करें

composer dump-autoload

यह कमांड सभी संकलित फाइलों और उनके रास्तों को साफ करेगा।


15

@ बशीर ने लगभग मेरी मदद की लेकिन मुझे ज़रूरत थी:

composer update --no-scripts

मुझे यहाँ उत्तर मिला: https://laracasts.com/discuss/channels/general-discussion/fatal-error-class-illuminatefoundationapplication-not-found-in-pathtopbjectbootstrapappphp-on-line-14?page=0


इसे तब तक न करें जब तक कि आप वास्तव में यह नहीं समझते कि यह क्या कर रहा है; यह उत्पादन में एक ऐप को तोड़ने की काफी संभावना है।
सांच्रो

9

पहले सुनिश्चित करें कि आपने संगीतकार को स्थापित किया है।

composer install

अगर आपने पहले से ही इनस्टॉल किया है तो कम्पोज़र को अपडेट करें।

composer update

1
इस उत्तर को एक उपयोगकर्ता के लिए उपयोगी होने के लिए गंभीर संपादन की आवश्यकता है। कृपया अपने सुझाव स्पष्ट रूप से बताएं और कोड नमूने प्रदान करें जो इस स्थिति में उपयोगी होंगे।
स्टीफन क्रैन

8

उचित autoload.phpकॉन्फ़िगरेशन:

ए) त्वरित उत्तर :

आपका autoload.php पथ गलत है। अर्थात। C:\Windows\SysWOW64\vendor\autoload.php आज तक: आपको इसे बदलने की आवश्यकता है:C:\Users\<Windows User Name>\vendor\autoload.php


बी) उदाहरण के साथ कदम: हम फेसबुक / php-graph-sdk को एक उदाहरण के रूप में लेंगे ; आवश्यकतानुसार बदलना Package Name

  1. कंपोजर को स्थापित करें
  2. CMD शीघ्र खोलें। + R+ प्रकारCMD
  3. यह आदेश चलाएँ: composer require facebook/graph-sdk
  4. अपने PHP पृष्ठ में पथ शामिल करें: require_once 'C:\Users\<Windows User Name>\vendor\autoload.php';
  5. विन्यास को परिभाषित करें Secretsऔर Access Tokenअपने पैकेज के लिए ... आदि।
  6. हैप्पी कोडिनिग।

सी) अधिक जानकारी:

खिड़कियों पर कंपोज़र स्थापित करने से यह आपके pacakges के लिए डिफ़ॉल्ट रास्ता तय करेगा; आप उन्हें वहां पा सकते हैं और ऑटोलैडर पथ शामिल कर सकते हैं:

C:\Users\<Windows User Name>\vendor

उसी प्रश्न के लिए जो आपने पूछा; उत्तर विंडोज के लिए WAMP सर्वर 64 BIT के लिए यह रास्ता था ।

तो बस अपने PHP आवेदन में यह परिवर्तन:

require_once __DIR__ . '/vendor/autoload.php'; 

सेवा:

require_once 'C:\Users\<Windows User Name>\vendor\autoload.php'; 

के तहत अपने विंडोज़ उपयोगकर्ता नाम का पता लगाएंC:\Users\

इन सभी से पहले, जैसा कि बी में पहले बताया गया है, आपको इस कमांड को चलाने की आवश्यकता है:

composer require <package name>

उदाहरण के लिए facebook php SDK:

composer require facebook/graph-sdk

यह प्रश्न पूछने के लिए धन्यवाद; इसकी सराहना की क्योंकि इससे मुझे इसी तरह के मुद्दे को हल करने में मदद मिली और इस सरल ट्यूटोरियल को लिखना समाप्त हो गया।


5

यदि आपने अपने प्रोजेक्ट को गितुब से क्लोन किया है या इसे कहीं और से मिला है, तो आप इस त्रुटि का सामना करेंगे। ऐसा इसलिए है क्योंकि आप विक्रेता फ़ोल्डर और अन्य फ़ाइलों को याद कर रहे हैं । विक्रेता फ़ोल्डर संकुल जो अपनी परियोजना के लिए निर्भर कर रहे हैं शामिल हैं। पैकेज निर्भरता composer.jsonफ़ाइल में संग्रहीत की जाती है और जीथब को धक्का देते हुए फ़ोल्डर को बाहर रखा गया था ।

इस त्रुटि को केवल चलाकर ठीक करें:

composer install

तब आपको अपने प्रोजेक्ट के लिए आवश्यक सभी संपत्तियां मिल जाएंगी।


3

दौड़ो composer update। बस


6
हाँ, पहले से ही स्वीकृत जवाब का हिस्सा है। इसे डुप्लिकेट करने में बिंदु क्या है?
निको हासे

यह भी बुरी सलाह है, उत्पादन में एक ऐप को तोड़ने की संभावना है।
सांच्रो

2

मेरी मशीन में यह पथ था:

C:/xampp5.0/htdocs/project-recordando-symfony/project-recordando-symfony

तब मैं भाग गया composer installया / और composer updateऔर यह इस त्रुटि दिखाई:

ErrorException ZipArchive::extractTo...

वह त्रुटि इसलिए है क्योंकि आपका मार्ग बहुत लंबा है, मैं इसमें बदल गया:

C:/xampp5.0/htdocs/p-symfony/*

और काम किया!


1

मैं संगीतकार को हटाकर और उचित तरीके से पुन: स्थापित करके हल करने में सक्षम था। मैंने जो किया था यह रहा:

  • sudo apt remove संगीतकार
  • sudo apt autoclean && sudo apt autoremove
  • से निर्देशों के साथ विश्व स्तर पर स्थापित: https://getcomposer.org/doc/00-intro.md इससे डाउनलोड करें: https://getcomposer.org/installer वैश्विक स्थापित करें: mv कंपोजर.फ़ार / usr / स्थानीय / बिन / संगीतकार नोट: मुझे एमवी कंपोजर के लिए स्थानांतरित करना था। थार / usr / बिन / संगीतकार)

मैं फिर से काम करने के लिए संगीतकार स्थापित करने में सक्षम था। इस मुद्दे के नीचे मेरा जवाब मिला: https://github.com/composer/composer/issues/5510


1

सबसे पहले, index.php के अंदर समीक्षा मार्ग

require __DIR__.'/../vendor/autoload.php';

$app = require_once __DIR__.'/../bootstrap/app.php';

मेरे मामले में मार्ग काम नहीं करता था, मुझे निर्देशिकाओं की समीक्षा करनी थी।


1

आपके प्रोजेक्ट फ़ोल्डर में, विक्रेता फ़ोल्डर गायब है, तो आपको यह त्रुटि मिली:

चेतावनी: आवश्यकता है (विक्रेता / ऑटोलैड। एफपी): स्ट्रीम खोलने में विफल: ऐसी कोई फ़ाइल या निर्देशिका नहीं

जब आप प्रोजेक्ट को git के माध्यम से डाउनलोड करते हैं , तो प्रोजेक्ट को विक्रेता फ़ोल्डर के बिना डाउनलोड किया जाता है

आपको इसकी आवश्यकता है /vendorक्योंकि आपके सभी पैकेज वहां मौजूद हैं, जिसमें सभी वर्ग लारवेल का उपयोग करते हैं। विक्रेता निर्देशिका में आपकी संगीतकार निर्भरताएँ होती हैं।

समाधान सरल है, बस इस कमांड को चलाएं:

composer update --no-scripts 
composer update
  • composer update --no-scriptsयह composer.jsonफ़ाइल में परिभाषित स्क्रिप्ट के निष्पादन को रोक देगा ।
  • composer updateजैसे ही वे composer.jsonफ़ाइल में निर्दिष्ट होते हैं, यह आपकी निर्भरता को अद्यतन करेगा ।

इस कमांड के साथ, आप अपने प्रोजेक्ट में वेंडर फोल्डर को फिर से बनाएंगे और उसके बाद आपका प्रोजेक्ट सामान्य रूप से काम करना शुरू कर देगा।


0

"वेंडर" नामक एक निर्देशिका होगी जिसे आपके रूट डायरेक्टरी में होना चाहिए यदि आपके पास एक क्लोन रिपॉजिटरी है और उस समय इस प्रकार की त्रुटि उत्पन्न करने की कोशिश कर रहा है।

".gitingore" फ़ाइल ने GIT पर विक्रेता निर्देशिका को शामिल नहीं करने के लिए कोड लिखा है इसलिए GIT को क्लोन करने के बाद आपकी परियोजना को लापता विक्रेता निर्देशिका के मुद्दे का सामना करना पड़ रहा है।

एक बार जब आप वेंडर डायरेक्टरी जोड़ लेंगे तो आपका प्रोजेक्ट फिर से काम करना शुरू कर देगा।


0

पूर्व के लिए अपेक्षित पुस्तकालय के साथ कंपोजर.जॉन फ़ाइल बनाएँ:

{
    "require": {
        "mpdf/mpdf": "^6.1"
    }
}

नीचे दिए गए कमांड को कंपोज़ करें।

composer install

द्रुपाल के मामले में:

पूर्व के लिए ऑटोलॉड को शामिल करने के लिए ड्रुपल के वेब रूट फ़ोल्डर का उपयोग करें:

define('DRUPAL_ROOT', getcwd());
require_once DRUPAL_ROOT . '/vendor/autoload.php';

अन्य प्रणालियों के मामले में: मूल फ़ोल्डर चर या स्थान का उपयोग ऑटोलैड.php को शामिल करने के लिए करें


0

मेरे लिए बस इस कमांड को पहले चलाएं

composer dump-autoload

विक्रेता फ़ोल्डर जोड़ने के लिए।

फिर इस कमांड को रन करें

composer update --no-scripts

संगीतकार को अद्यतन करने के लिए।


0

कुछ फ़ाइलें गुम होने के कारण यह त्रुटि होती है और मुख्य कारण " संगीतकार " है

यहाँ छवि विवरण दर्ज करें

पहले इन कमांड को CMD में चलाएं

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

फिर एक नया प्रोजेक्ट बनाएं
उदाहरण:

D:/Laravel_Projects/New_Project
laravel new New_Project

इसके बाद सर्वर का इस्तेमाल शुरू करें

php artisan serve

-1

Php.ini पर auto_prepend_file प्रॉपर्टी बदलें

; Automatically add files before PHP document. 
;http://php.net/auto-prepend-file 
auto_prepend_file =

यह प्रश्न से कैसे संबंधित है? एक पूरी तरह से अन्य समाधान के साथ एक स्वीकृत उत्तर है
निको हेस

मुझे आज सुबह निम्नलिखित त्रुटि हुई। "चेतावनी: अज्ञात: स्ट्रीम खोलने में विफल: लाइन 0 पर अज्ञात में ऐसी कोई फ़ाइल या निर्देशिका नहीं" इसलिए मैंने इस समाधान को लिखा।
सेव्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.