require (vendor / autoload.php): nie udało się otworzyć strumienia

134

Wiem, że ten numer był publikowany wiele razy, ale wydaje mi się, że to inny problem.

Rzeczywiście, ten błąd

Ostrzeżenie: require (vendor / autoload.php): nie udało się otworzyć strumienia: nie ma takiego pliku lub katalogu w C: \ xampp \ htdocs \ site_web \ send_mail.php w wierszu 3

Błąd krytyczny: require (): nie powiodło się otwieranie wymaganego 'vendor / autoload.php' (include_path = 'C: \ xampp \ php \ PEAR') w C: \ xampp \ htdocs \ site_web \ send_mail.php w linii 3

pojawia się na początku mojego kodu z tej linii:

require 'vendor/autoload.php';

Więc wydaje mi się, że gdzieś na moim komputerze musi znajdować się plik /vendor/autoload.php (zainstalowałem program Composer i uruchomiłem composer require phpmailer/phpmailer).

Więc szukałem tego pliku przy użyciu: dir /s autoload.phpw wierszu polecenia systemu Windows, a znaleziono je tutaj: C:\Windows\SysWOW64\vendor\autoload.php,

ale dla mnie folder syswow64 nie ma nic do oglądania z autoload.php , nie widzę, czego tu brakuje.

adrTuIPKJ44
źródło
Może się to również zdarzyć, jeśli masz php artisan w górę lub w dół w pliku composer.json w sekcji skryptów podczas wstępnej instalacji. Wygląda na to, że potrzebuje plików w folderze dostawcy, aby uruchomić tryb konserwacji, który nie jest jeszcze dostępny.
Thomas,

Odpowiedzi:

237

Brakuje Ci uruchomionego narzędzia composer install, które zaimportuje pakiety i utworzy folder dostawcy wraz ze skryptem automatycznego ładowania.

Upewnij się, że ścieżka względna jest poprawna. Na przykład przykładowe skrypty w PHPMailer znajdują się examples/poniżej katalogu głównego projektu, więc prawidłowa ścieżka względna do załadowania autoloadera kompozytora z tego miejsca będzie ../vendor/autoload.php.

Autoload.php, który znalazłeś, C:\Windows\SysWOW64\vendor\autoload.phpjest prawdopodobnie globalną instalacją kompozytora - gdzie zwykle umieszczasz takie rzeczy jak phpcs, phpunit, phpmd itp.

composer updateto nie to samo i prawdopodobnie nie to, czego chcesz użyć. Jeśli twój kod jest testowany z twoimi aktualnymi wersjami pakietu, uruchomienie updatemoże spowodować awarie, które mogą wymagać dalszej pracy i testowania, więc nie uruchamiaj, updatechyba że masz konkretny powód i dokładnie rozumiesz, co to znaczy. Aby wyjaśnić dalej - prawdopodobnie powinieneś uruchamiać się tylko composer updatelokalnie, nigdy na serwerze, ponieważ istnieje duże prawdopodobieństwo, że aplikacje zepsują się w środowisku produkcyjnym.

Często widzę skargi, że ludzie nie mogą używać narzędzia Composer, ponieważ nie mogą go uruchomić na swoim serwerze (np. Ponieważ jest współdzielony i nie mają dostępu do powłoki). W takim przypadku możesz nadal korzystać z narzędzia Composer: uruchom go lokalnie (środowisko, które nie ma takich ograniczeń) i prześlij folder lokalnego dostawcy, który wygeneruje, wraz ze wszystkimi innymi skryptami PHP.

Uruchomienie wykonuje composer update również a composer install, a jeśli obecnie nie masz vendorfolderu (tj. Masz nowe pobranie projektu), to composer installskutecznie wykonuje a composer update, ale nadal ważne jest, aby zrozumieć różnicę między nimi, ponieważ zdecydowanie nieone zamienne.

Zwróć uwagę, że można również zaktualizować pojedynczy pakiet, nadając mu nazwę, na przykład:

composer update ramsey/uuid

Spowoduje to ponowne rozwiązanie wersji określonej w pliku composer.jsoni zainstalowanie go w folderze dostawcy oraz zaktualizowanie composer.lockpliku, aby był zgodny. Jest to znacznie mniej prawdopodobne, że spowoduje to problemy niż ogólne, composer updatejeśli potrzebujesz tylko określonej aktualizacji do jednego pakietu.

Composer 2.0 (wkrótce) powinien usunąć wszelkie pozostałe niespójności między wynikami instalacji i aktualizacji.

Synchro
źródło
1
Jak uruchomić instalację Composera? To nie jest rozpoznawane jako polecenie
Yvonne Aburrow
dzięki, znalazłem to i pobrałem - ale pyta mnie, gdzie PHP jest zainstalowane lokalnie. Naprawdę nie chcę instalować PHP lokalnie (lub Composera), po prostu chcę go uruchomić w mojej aplikacji Google Cloud.
Yvonne Aburrow
Postępuję
Yvonne Aburrow
1
Chmura Google dla PHP zapewnia kompozytora do zainstalowania jego zależności, wystarczy go skonfigurować, patrz tutaj: cloud.google.com/appengine/docs/f flexible
Synchro
2
Tak, Google Cloud będzie musiało działać, composer installa następnie odczyta zawartość Twojego composer.jsonpliku i zainstaluje wszystkie zależności w vendorfolderze. Jeśli tego nie robi, mogę tylko zasugerować przeczytanie dokumentów, które wskazałem i dwukrotne sprawdzenie wszystkich. Na tym polega różnica między „wysyłaniem” a „wdrażaniem”.
Synchro
40

Jeśli pojawi się błąd również podczas uruchamiania

composer install

Po prostu uruchom najpierw to polecenie

composer dump-autoload

To polecenie wyczyści wszystkie skompilowane pliki i ich ścieżki.

mbouzahir
źródło
9

Najpierw upewnij się, że masz zainstalowany kompozytor.

composer install

Jeśli już zainstalowałeś, zaktualizuj kompozytora.

composer update
IsharaNW
źródło
1
Ta odpowiedź wymaga poważnej edycji, aby była pomocna dla użytkownika. Proszę jasno przedstawić swoje sugestie i podać przykłady kodu, które będą przydatne w tej sytuacji.
Stefan Crain
8

Właściwa autoload.phpkonfiguracja:

A) Szybka odpowiedź :

Twoja ścieżka autoload.php jest nieprawidłowa. to znaczy. C:\Windows\SysWOW64\vendor\autoload.php Do tej pory: musisz to zmienić na:C:\Users\<Windows User Name>\vendor\autoload.php


B) Kroki z przykładem: Jako przykład weźmiemy facebook / php-graph-sdk ; zmień na Package Namew razie potrzeby.

  1. Zainstaluj plik composer.exe
  2. Otwórz polecenie CMD. + R+ typCMD
  3. Uruchom to polecenie: composer require facebook/graph-sdk
  4. Uwzględnij ścieżkę na swojej stronie PHP: require_once 'C:\Users\<Windows User Name>\vendor\autoload.php';
  5. Zdefiniuj konfigurację Secretsi Access Tokendla swojego pakietu ... itd.
  6. Miłego współczucia.

C) Dalsze szczegóły:

Zainstalowanie narzędzia Composer w systemie Windows spowoduje ustawienie tej domyślnej ścieżki dla pakietów; możesz je tam znaleźć i dołączyć ścieżkę do autoloadera:

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

Na to samo pytanie, które zadałeś; odpowiedzią była ta ścieżka dla WAMP Server 64 BIT dla Windows .

Następnie po prostu w aplikacji PHP zmień to:

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

Do:

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

Znajdź swoją nazwę użytkownika Windows podC:\Users\

Przed tym wszystkim, jak wskazano wcześniej w B), musisz uruchomić to polecenie:

composer require <package name>

na przykład dla facebook php SDK:

composer require facebook/graph-sdk

Dziękuję za zadanie tego pytania; doceniane, ponieważ pomogło mi rozwiązać podobny problem i zakończyło pisanie tego prostego samouczka.

wpcoder
źródło
5

Jeśli sklonowałeś swój projekt z Github lub pobrałeś go z innego miejsca, napotkasz ten błąd. Dzieje się tak, ponieważ brakuje Ci folderu dostawcy i innych plików. Folderu sprzedawca zawiera pakiety, które są zależne do projektu. Zależności pakietów są przechowywane w composer.jsonpliku, a folder został wykluczony podczas wypychania do Github .

Napraw ten błąd, uruchamiając po prostu:

composer install

Otrzymasz wtedy wszystkie zasoby potrzebne do swojego projektu.

Anand Mainali
źródło
4

biegać composer update. Otóż ​​to

Bashir ahmad
źródło
6
Tak, to już część zaakceptowanej odpowiedzi. Po co go kopiować?
Nico Haase,
To także zła rada, która może zepsuć aplikację w produkcji.
Synchro
2

W mojej maszynie miałem taką ścieżkę:

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

Następnie uruchomiłem composer installlub / i zwróciłem composer updateten błąd:

ErrorException ZipArchive::extractTo...

Ten błąd wynika z tego, że twoja ścieżka jest zbyt długa, zmieniłem na:

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

i działało!

jjoselon
źródło
2

Najpierw przejrzyj trasę wewnątrz index.php

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

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

w moim przypadku trasa nie działała, musiałem przejrzeć katalogi.

Diego Santa Cruz Mendezú
źródło
Zaoszczędziłem mój czas, dziękuję i dostałeś 1 głos za kolegę. niezła robota
iamnabink
1

Udało mi się to rozwiązać, usuwając program Composer i ponownie instalując go we właściwy sposób. Oto co zrobiłem:

Wtedy mogłem ponownie uruchomić instalację Composera. Znalazłem swoją odpowiedź na dole tego problemu: https://github.com/composer/composer/issues/5510

nwolybug
źródło
1

W folderze projektu brakuje folderu dostawcy, więc pojawił się ten błąd:

Ostrzeżenie: require (vendor / autoload.php): nie udało się otworzyć strumienia: nie ma takiego pliku lub katalogu w

Gdy pobierasz projekt przez git , projekt jest pobierany bez folderu dostawcy

Potrzebujesz, /vendorponieważ są tam wszystkie twoje pakiety, w tym wszystkie klasy używane przez Laravel. Katalog dostawcy zawiera zależności Composera.

Rozwiązanie jest proste, po prostu uruchom to polecenie:

composer update --no-scripts 
composer update
  • composer update --no-scriptsPominie wykonywanie skryptów zdefiniowanych w composer.jsonpliku.
  • composer updateZaktualizuje zależności, tak jak są one określone w composer.jsonpliku.

Za pomocą tego polecenia ponownie utworzysz folder dostawcy w swoim projekcie, a następnie projekt zacznie normalnie działać.

Udhav Sarvaiya
źródło
0

Będzie tam katalog o nazwie „sprzedawca”, który musi znajdować się w twoim katalogu głównym, jeśli masz sklonowane repozytorium i próbujesz skonfigurować w tym czasie tego typu błąd.

Plik „.gitingore” zawiera kod, aby nie uwzględniać katalogu dostawcy w GIT, więc po sklonowaniu GIT projekt staje przed problemem braku katalogu dostawcy.

Po dodaniu katalogu dostawcy projekt zacznie działać ponownie.

Ajay Gadhavana
źródło
0

Utwórz plik composer.json z wymaganą biblioteką, na przykład:

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

Wykonaj poniższe polecenie, w którym istnieje plik composer.json:

composer install

W przypadku Drupala:

Użyj głównego folderu sieciowego drupal, aby włączyć automatyczne ładowanie np .:

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

W przypadku innych systemów: Użyj zmiennej lub lokalizacji folderu głównego, aby dołączyć plik autoload.php

Sameer Kumar Choudhary
źródło
0

Dla mnie Po prostu uruchom najpierw to polecenie

composer dump-autoload

aby dodać folder dostawcy.

następnie uruchom to polecenie

composer update --no-scripts

zaktualizować kompozytora.

Nasser Albelbeisi
źródło
0

Ten błąd występuje z powodu braku niektórych plików, a głównym powodem jest „ Kompozytor

wprowadź opis obrazu tutaj

Najpierw uruchom te polecenia w 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');"

Następnie utwórz nowy projekt
Przykład:

D:/Laravel_Projects/New_Project
laravel new New_Project

Następnie uruchom serwer za pomocą

php artisan serve
hexhad
źródło
-1

Zmień właściwość auto_prepend_file na php.ini

; Automatically add files before PHP document. 
;http://php.net/auto-prepend-file 
auto_prepend_file =
ercvs
źródło
Jak to się ma do pytania? Jest akceptowana odpowiedź z zupełnie innym rozwiązaniem
Nico Haase,
Dziś rano miałem następujący błąd. „Ostrzeżenie: nieznane: nie udało się otworzyć strumienia: nie ma takiego pliku lub katalogu w nieznanym wierszu 0” Dlatego napisałem to rozwiązanie.
ercvs