require (vendor / autoload.php): impossibile aprire lo stream


132

So che questo numero è stato pubblicato molte volte, ma per me sembra essere un problema diverso.

In effetti, questo errore

Attenzione: require (vendor / autoload.php): impossibile aprire lo stream: nessun file o directory di questo tipo in C: \ xampp \ htdocs \ site_web \ send_mail.php alla riga 3

Errore irreversibile: require (): apertura non riuscita richiesta 'vendor / autoload.php' (include_path = 'C: \ xampp \ php \ PEAR') in C: \ xampp \ htdocs \ site_web \ send_mail.php alla riga 3

appare all'inizio del mio codice da questa riga:

require 'vendor/autoload.php';

Quindi, immagino che ci debba essere un file /vendor/autoload.php da qualche parte nel mio computer (ho installato composer ed eseguito composer require phpmailer/phpmailer).

Così, ho cercato questo file utilizzando: dir /s autoload.phpnella riga di comando di Windows, e quello che si trova qui: C:\Windows\SysWOW64\vendor\autoload.php,

ma per me, la cartella syswow64 non ha nulla da vedere con autoload.php , non vedo cosa mi manca qui.


Ciò può accadere anche se hai php artisan su o giù nel tuo file composer.json nella sezione degli script sulla preinstallazione. Sembra che siano necessari file nella cartella del fornitore per eseguire la modalità di manutenzione, che non è ancora disponibile.
Thomas

Risposte:


234

Quello che ti manca è l'esecuzione composer install, che importerà i tuoi pacchetti e creerà la cartella del fornitore, insieme allo script di caricamento automatico.

Assicurati che il tuo percorso relativo sia corretto. Ad esempio, gli script di esempio in PHPMailer si trovano examples/sotto la radice del progetto, quindi il percorso relativo corretto per caricare il caricatore automatico del compositore da lì sarebbe ../vendor/autoload.php.

Il file autoload.php che hai trovato C:\Windows\SysWOW64\vendor\autoload.phpè probabilmente un'installazione di compositore globale - dove di solito metti cose come phpcs, phpunit, phpmd ecc.

composer updatenon è la stessa cosa e probabilmente non è quello che vuoi usare. Se il codice viene testato con le versioni correnti del pacchetto, l'esecuzione updatepotrebbe causare rotture che potrebbero richiedere ulteriore lavoro e test, quindi non eseguire a updatemeno che non si abbia una ragione specifica e si capisca esattamente cosa significa. Per chiarire ulteriormente, dovresti probabilmente eseguire sempre e solo composer updatelocalmente, mai sul tuo server poiché è ragionevolmente probabile che interrompa le app in produzione.

Vedo spesso lamentele sul fatto che le persone non possono usare Composer perché non possono eseguirlo sul proprio server (ad esempio perché è condiviso e non hanno accesso alla shell). In tal caso, puoi comunque utilizzare composer: eseguirlo localmente (un ambiente che non ha tali restrizioni) e caricare la cartella del fornitore locale che genera insieme a tutti gli altri script PHP.

Esecuzione composer update anche esegue una composer install, e se al momento non si dispone di un vendordispositivo di piegatura (per esempio, si avere una nuova cassa di un progetto), quindi composer installesegue effettivamente una composer update, ma è ancora di vitale importanza per capire la differenza tra i due in quanto sono sicuramente non intercambiabili.

Nota che è anche possibile aggiornare un singolo pacchetto nominandolo, ad esempio:

composer update ramsey/uuid

Ciò risolverà nuovamente la versione specificata nel tuo composer.jsone la installerà nella cartella del fornitore e aggiornerà il tuo composer.lockfile in modo che corrisponda. È molto meno probabile che questo causi problemi rispetto a un generale composer updatese hai solo bisogno di un aggiornamento specifico per un pacchetto.

Composer 2.0 (disponibile a breve) dovrebbe rimuovere eventuali incongruenze rimanenti tra i risultati dell'installazione e dell'aggiornamento.


1
Come eseguo l'installazione del compositore? Non è riconosciuto come un comando
Yvonne Aburrow il

grazie, l'ho trovato e l'ho scaricato, ma mi chiede dove è installato PHP localmente. Non voglio davvero installare PHP localmente (o Composer), voglio solo eseguirlo sulla mia app Google Cloud.
Yvonne Aburrow

Sto seguendo i passaggi in questa documentazione qui: github.com/googlecloudplatform/google-cloud-php
Yvonne Aburrow

1
Google cloud per PHP fornisce un compositore per installare le sue dipendenze, devi solo configurarlo, vedi qui: cloud.google.com/appengine/docs/forrect/php/…
Synchro

2
Sì, sarà necessario eseguire google cloud, composer installquindi leggerà il contenuto del composer.jsonfile e installerà tutte le dipendenze nella vendorcartella. Se non lo fa, posso solo suggerire di leggere i documenti che ho indicato e ricontrollare tutto. Questa è davvero la distinzione tra "upload" e "deployment".
Synchro

40

Se ricevi l'errore anche quando esegui

composer install

Esegui prima questo comando

composer dump-autoload

Questo comando ripulirà tutti i file compilati e i relativi percorsi.



9

Per prima cosa assicurati di aver installato il compositore.

composer install

Se hai già installato, aggiorna il compositore.

composer update

1
Questa risposta necessita di una modifica seria per essere utile a un utente. Indica chiaramente i tuoi suggerimenti e fornisci esempi di codice che sarebbero utili in questa situazione.
Stefan Crain

8

autoload.phpConfigurazione corretta :

A) Risposta rapida :

Il tuo percorso autoload.php è sbagliato. vale a dire. C:\Windows\SysWOW64\vendor\autoload.php Ad oggi: è necessario cambiarlo in:C:\Users\<Windows User Name>\vendor\autoload.php


B) Passaggi con esempio: prenderemo facebook / php-graph-sdk come esempio; passare a Package Namesecondo necessità.

  1. Installa composer.exe
  2. Apri CMD Prompt. + R+ tipoCMD
  3. Esegui questo comando: composer require facebook/graph-sdk
  4. Includi il percorso nella tua pagina PHP: require_once 'C:\Users\<Windows User Name>\vendor\autoload.php';
  5. Definisci la configurazione Secretse Access Tokenper il tuo pacchetto ... ecc.
  6. Buon codinig.

C) Ulteriori dettagli:

L'installazione di Composer su Windows imposterà questo percorso predefinito per i tuoi pacakges; puoi trovarli lì e includere il percorso del caricatore automatico:

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

Per la stessa domanda che hai fatto; la risposta era questo percorso per WAMP Server 64 BIT per Windows .

Quindi semplicemente nella tua applicazione PHP cambia questo:

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

Per:

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

Trova il tuo nome utente di Windows sottoC:\Users\

Prima di tutto ciò, come indicato prima in B), è necessario eseguire questo comando:

composer require <package name>

per facebook php SDK ad esempio:

composer require facebook/graph-sdk

Grazie per aver posto questa domanda; apprezzato perché mi ha aiutato a risolvere problemi simili e ho finito di scrivere questo semplice tutorial.


5

Se hai clonato il tuo progetto da Github o lo hai ricevuto da qualche altra parte, incontrerai questo errore. Questo perché ti mancano la cartella del fornitore e altri file. La cartella del fornitore contiene pacchetti che dipendono dal progetto. Le dipendenze del pacchetto sono archiviate in composer.jsonfile e la cartella è stata esclusa durante il push su Github .

Risolvi questo errore semplicemente eseguendo:

composer install

Quindi otterrai tutte le risorse necessarie per il tuo progetto.


4

corri composer update. Questo è tutto


6
Sì, questo fa già parte della risposta accettata. Che senso ha duplicarlo?
Nico Haase

È anche un cattivo consiglio, che potrebbe rompere un'app in produzione.
Synchro

2

Ho avuto questo percorso nella mia macchina:

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

Quindi ho eseguito composer installo / composer updatee ha restituito questo errore:

ErrorException ZipArchive::extractTo...

Questo errore è perché il tuo percorso è troppo lungo, sono passato a:

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

e ha funzionato!


2

Innanzitutto, rivedi il percorso all'interno di index.php

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

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

nel mio caso il percorso non ha funzionato, ho dovuto rivedere le directory.


Mi hai risparmiato tempo, grazie, e hai ricevuto 1 voto positivo, amico. bel lavoro
iamnabink

1

Sono stato in grado di risolvere rimuovendo il compositore e reinstallando nel modo corretto. Ecco cosa ho fatto:

Sono quindi riuscito a far funzionare di nuovo l'installazione del compositore. Ho trovato la mia risposta in fondo a questo problema: https://github.com/composer/composer/issues/5510


1

Nella cartella del progetto manca la cartella del fornitore, quindi hai ricevuto questo errore:

Attenzione: require (vendor / autoload.php): impossibile aprire il flusso: nessun file o directory di questo tipo in

Quando scarichi il progetto tramite git , il progetto viene scaricato senza l'estensione cartella del fornitore

Hai bisogno /vendorperché ci sono tutti i tuoi pacchetti, incluse tutte le classi usate da Laravel. La directory del fornitore contiene le dipendenze di Composer.

La soluzione è semplice, basta eseguire questo comando:

composer update --no-scripts 
composer update
  • composer update --no-scriptsSalta l'esecuzione degli script definiti nel composer.jsonfile.
  • composer updateAggiornerà le tue dipendenze come sono specificate nel composer.jsonfile.

Con questo comando, ricrea la cartella del fornitore nel tuo progetto, dopodiché il tuo progetto inizierà a funzionare normalmente.


0

Ci sarà una directory chiamata "vendor" che deve essere nella directory principale se si dispone di un repository clonato e si sta tentando di impostare in quel momento questo tipo di errore.

Il file ".gitingore" ha scritto il codice per non includere la directory del fornitore su GIT, quindi dopo aver clonato GIT il tuo progetto affronta il problema della directory del fornitore mancante.

Dopo aver aggiunto la directory del fornitore, il progetto ricomincerà a funzionare.


0

Crea il file composer.json con la libreria richiesta per es:

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

Esegui il comando seguente dove esiste composer.json:

composer install

In caso di Drupal:

Usa la cartella principale web di drupal per includere il caricamento automatico, ad esempio:

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

In caso di altri sistemi: utilizzare la variabile della cartella principale o la posizione per includere autoload.php


0

Per me, esegui prima questo comando

composer dump-autoload

per aggiungere la cartella del fornitore.

quindi esegui questo comando

composer update --no-scripts

per aggiornare il compositore.


0

Questo errore si verifica a causa della mancanza di alcuni file e il motivo principale è " Composer "

inserisci qui la descrizione dell'immagine

Per prima cosa esegui questi comandi in 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');"

Quindi crea un nuovo progetto
Esempio:

D:/Laravel_Projects/New_Project
laravel new New_Project

Dopodiché avvia il server utilizzando

php artisan serve

-1

Modifica la proprietà auto_prepend_file su php.ini

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

Come si collega alla domanda? C'è una risposta accettata con una soluzione completamente diversa
Nico Haase

Questa mattina ho avuto il seguente errore. "Attenzione: Sconosciuto: impossibile aprire il flusso: nessun file o directory in Sconosciuto sulla riga 0" Pertanto ho scritto questa soluzione.
ercvs
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.