require (vendor / autoload.php): échec de l'ouverture du flux

132

Je sais que ce numéro a été publié de nombreuses fois, mais pour moi, cela semble être un problème différent.

En effet, cette erreur

Avertissement: require (vendor / autoload.php): échec de l'ouverture du flux: aucun fichier ou répertoire de ce type dans C: \ xampp \ htdocs \ site_web \ send_mail.php sur la ligne 3

Erreur fatale: require (): Echec de l'ouverture requise 'vendor / autoload.php' (include_path = 'C: \ xampp \ php \ PEAR') dans C: \ xampp \ htdocs \ site_web \ send_mail.php sur la ligne 3

apparaît au début de mon code à partir de cette ligne:

require 'vendor/autoload.php';

Donc, je suppose qu'il doit y avoir un fichier /vendor/autoload.php quelque part dans mon ordinateur (j'ai installé composer et exécuté composer require phpmailer/phpmailer).

Alors, je cherchais ce fichier en utilisant: dir /s autoload.phpdans la ligne de commande Windows, et on a trouvé ici: C:\Windows\SysWOW64\vendor\autoload.php,

mais pour moi, le dossier syswow64 n'a rien à voir avec autoload.php , je ne vois pas ce qui me manque ici.

adrTuIPKJ44
la source
Cela peut également se produire si vous avez php artisan en haut ou en bas dans votre fichier composer.json dans la section scripts sur la pré-installation. Il semble avoir besoin de fichiers dans le dossier du fournisseur pour exécuter le mode de maintenance, qui n'est pas encore disponible.
Thomas

Réponses:

234

Ce qui vous manque, c'est l'exécution composer install, qui importera vos packages et créera le dossier du fournisseur, avec le script de chargement automatique.

Assurez-vous que votre chemin relatif est correct. Par exemple, les exemples de scripts dans PHPMailer se trouvent examples/sous la racine du projet, donc le chemin relatif correct pour charger l'autochargeur de compositeur à partir de là serait ../vendor/autoload.php.

Le fichier autoload.php dans C:\Windows\SysWOW64\vendor\autoload.phplequel vous avez trouvé est probablement une installation de composition globale - où vous mettrez généralement des éléments tels que phpcs, phpunit, phpmd, etc.

composer updaten'est pas la même chose, et probablement pas ce que vous voulez utiliser. Si votre code est testé avec les versions actuelles de votre package, l'exécution updatepeut entraîner des ruptures qui peuvent nécessiter des travaux et des tests supplémentaires.Ne lancez donc pas à updatemoins d'avoir une raison spécifique et de comprendre exactement ce que cela signifie. Pour clarifier davantage - vous ne devriez probablement jamais exécuter que composer updatelocalement, jamais sur votre serveur car il est raisonnablement susceptible de casser les applications en production.

Je vois souvent des plaintes selon lesquelles les gens ne peuvent pas utiliser composer parce qu'ils ne peuvent pas l'exécuter sur leur serveur (par exemple parce qu'il est partagé et qu'ils n'ont pas d'accès shell). Dans ce cas, vous pouvez toujours utiliser composer: exécutez-le localement (un environnement qui n'a pas de telles restrictions), et téléchargez le dossier du fournisseur local qu'il génère avec tous vos autres scripts PHP.

L'exécution exécute composer update également un composer install, et si vous n'avez pas actuellement de vendordossier (c'est-à-dire que vous avez une nouvelle extraction d'un projet), puis composer installeffectue effectivement un composer update, mais il est toujours essentiel de comprendre la différence entre les deux car ils ne sont certainement pas interchangeables.

Notez qu'il est également possible de mettre à jour un seul package en le nommant, par exemple:

composer update ramsey/uuid

Cela résoudra la version spécifiée dans votre composer.jsonet l'installera dans le dossier de votre fournisseur, et mettra à jour votre composer.lockfichier pour qu'il corresponde. Ceci est beaucoup moins susceptible de causer des problèmes qu'un général composer updatesi vous avez juste besoin d'une mise à jour spécifique d'un package.

Composer 2.0 (bientôt disponible) devrait supprimer toutes les incohérences restantes entre les résultats de l'installation et de la mise à jour.

Synchro
la source
1
Comment exécuter l'installation de composer? Ce n'est pas reconnu comme une commande
Yvonne Aburrow
merci, j'ai trouvé cela et je l'ai téléchargé - mais il me demande où PHP est installé localement. Je ne veux pas vraiment installer PHP localement (ou Composer), je veux juste l'exécuter sur mon application Google Cloud.
Yvonne Aburrow
Je suis les étapes de ce morceau de documentation ici: github.com/googlecloudplatform/google-cloud-php
Yvonne Aburrow
1
Google cloud pour PHP fournit à composer pour installer ses dépendances, il vous suffit de le configurer, voir ici: cloud.google.com/appengine/docs/flexible/php/…
Synchro
2
Oui, Google Cloud devra s'exécuter composer installet il lira ensuite le contenu de votre composer.jsonfichier et installera toutes vos dépendances dans le vendordossier. Si ce n'est pas le cas, je ne peux que suggérer de lire les documents que j'ai indiqués et de tout vérifier. C'est vraiment la distinction entre «téléchargement» et «déploiement».
Synchro
40

Si vous obtenez l'erreur également lorsque vous exécutez

composer install

Exécutez simplement cette commande en premier

composer dump-autoload

Cette commande nettoiera tous les fichiers compilés et leurs chemins.

mbouzahir
la source
9

Assurez-vous d'abord que vous avez installé le composeur.

composer install

Si vous avez déjà installé, mettez à jour le composeur.

composer update
IsharaNW
la source
1
Cette réponse doit être sérieusement modifiée pour être utile à un utilisateur. Veuillez indiquer clairement vos suggestions et fournir des exemples de code qui seraient utiles dans cette situation.
Stefan Crain
8

Bonne autoload.phpconfiguration:

A) Réponse rapide :

Votre chemin autoload.php est incorrect. c'est à dire. C:\Windows\SysWOW64\vendor\autoload.php À ce jour: vous devez le changer en:C:\Users\<Windows User Name>\vendor\autoload.php


B) Etapes avec l'exemple: Nous prendrons facebook / php-graph-sdk comme exemple; changer au Package Namebesoin.

  1. Installez composer.exe
  2. Ouvrez l'invite CMD. + R+ typeCMD
  3. Exécutez cette commande: composer require facebook/graph-sdk
  4. Incluez le chemin dans votre page PHP: require_once 'C:\Users\<Windows User Name>\vendor\autoload.php';
  5. Définissez la configuration Secretset Access Tokenpour votre package ... etc.
  6. Bon codinig.

C) Plus de détails:

L'installation de composer sur Windows définira ce chemin par défaut pour vos pacakges; vous pouvez les trouver ici et inclure le chemin du chargeur automatique:

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

Pour la même question que vous avez posée; la réponse était ce chemin pour WAMP Server 64 BIT pour Windows .

Ensuite, changez simplement ceci dans votre application PHP:

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

À:

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

Trouvez votre nom d'utilisateur Windows sousC:\Users\

Avant tout cela, comme indiqué précédemment en B), vous devez exécuter cette commande:

composer require <package name>

pour facebook php SDK par exemple:

composer require facebook/graph-sdk

Merci d'avoir posé cette question; apprécié car il m'a aidé à résoudre un problème similaire et a fini d'écrire ce tutoriel simple.

wpcoder
la source
5

Si vous avez cloné votre projet depuis Github ou l'avez obtenu ailleurs, vous rencontrerez cette erreur. C'est parce qu'il vous manque le dossier du fournisseur et d'autres fichiers. Le dossier du fournisseur contient des packages qui dépendent de votre projet. Les dépendances du package sont stockées dans un composer.jsonfichier et le dossier a été exclu lors du transfert vers Github .

Corrigez cette erreur en exécutant simplement:

composer install

Ensuite, vous obtiendrez tous les atouts nécessaires à votre projet.

Anand Mainali
la source
4

courir composer update. C'est tout

Bashir Ahmed
la source
6
Ouais, cela fait déjà partie de la réponse acceptée. Quel est l'intérêt de le dupliquer?
Nico Haase
C'est aussi un mauvais conseil, susceptible de casser une application en production.
Synchro
2

J'avais ce chemin dans ma machine:

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

Ensuite, j'ai couru composer installou / composer updateet il a renvoyé cette erreur:

ErrorException ZipArchive::extractTo...

Cette erreur est que votre chemin est trop long, j'ai changé pour:

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

et a travaillé!

Jjoselon
la source
2

Tout d'abord, examinez l'itinéraire dans index.php

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

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

dans mon cas, l'itinéraire ne fonctionnait pas, j'ai dû revoir les répertoires.

Diego Santa Cruz Mendezú
la source
J'ai économisé mon temps, merci, et vous avez obtenu 1 vote positif. nice work
iamnabink
1

J'ai pu résoudre le problème en supprimant le compositeur et en le réinstallant de la bonne manière. Voici ce que j'ai fait:

  • sudo apt supprimer le compositeur
  • sudo apt autoclean && sudo apt autoremove
  • Installé globalement avec les instructions de: https://getcomposer.org/doc/00-intro.md Téléchargement depuis: https://getcomposer.org/installer global install: mv composer.phar / usr / local / bin / composer ( Remarque: j'ai dû déplacer le mien vers mv composer.phar / usr / bin / composer)

J'ai ensuite pu faire fonctionner à nouveau le programme d'installation de composer. J'ai trouvé ma réponse au bas de ce numéro: https://github.com/composer/composer/issues/5510

nwolybug
la source
1

Dans votre dossier de projet, le dossier du fournisseur est manquant, vous avez donc cette erreur:

Avertissement: require (vendor / autoload.php): impossible d'ouvrir le flux: aucun fichier ou répertoire de ce type dans

Lorsque vous téléchargez le projet via git , le projet est téléchargé sans le dossier fournisseur

Vous en avez besoin /vendorcar tous vos packages sont là, y compris toutes les classes utilisées par Laravel. Le répertoire du fournisseur contient vos dépendances de Composer.

La solution est simple, exécutez simplement cette commande:

composer update --no-scripts 
composer update
  • composer update --no-scriptsIl sautera l'exécution des scripts définis dans le composer.jsonfichier.
  • composer updateIl mettra à jour vos dépendances telles qu'elles sont spécifiées dans le composer.jsonfichier.

Avec cette commande, vous recréerez le dossier du fournisseur dans votre projet et ensuite votre projet commencera à fonctionner normalement.

Udhav Sarvaiya
la source
0

Il y aura un répertoire appelé "vendeur" qui doit être dans votre répertoire racine si vous avez un référentiel cloné et que vous essayez de configurer à ce moment-là ce type d'erreur.

Le fichier ".gitingore" a écrit du code pour ne pas inclure le répertoire du fournisseur sur GIT, donc après le clonage de GIT, votre projet est confronté au problème du répertoire du fournisseur manquant.

Une fois que vous avez ajouté le répertoire des fournisseurs, votre projet recommencera à fonctionner.

Ajay Gadhavana
la source
0

Créez un fichier composer.json avec la bibliothèque requise, par exemple:

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

Exécutez la commande ci-dessous là où composer.json existe:

composer install

En cas de Drupal:

Utilisez le dossier racine Web de drupal pour inclure le chargement automatique, par exemple:

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

Dans le cas d'autres systèmes: utilisez la variable ou l'emplacement du dossier racine pour inclure le fichier autoload.php

Sameer Kumar Choudhary
la source
0

Pour moi, lancez d'abord cette commande

composer dump-autoload

pour ajouter le dossier du fournisseur.

puis exécutez cette commande

composer update --no-scripts

pour mettre à jour le compositeur.

Nasser Albelbeisi
la source
0

Cette erreur se produit en raison de certains fichiers manquants et la raison principale est " Composer "

entrez la description de l'image ici

Exécutez d'abord ces commandes dans 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');"

Ensuite, créez un nouvel
exemple de projet :

D:/Laravel_Projects/New_Project
laravel new New_Project

Après cela, démarrez le serveur en utilisant

php artisan serve
hexhad
la source
-1

Modifier la propriété auto_prepend_file sur php.ini

; Automatically add files before PHP document. 
;http://php.net/auto-prepend-file 
auto_prepend_file =
ercvs
la source
Comment cela se rapporte-t-il à la question? Il y a une réponse acceptée avec une solution complètement différente
Nico Haase
J'ai eu l'erreur suivante ce matin. "Avertissement: Inconnu: échec de l'ouverture du flux: aucun fichier ou répertoire de ce type dans Inconnu sur la ligne 0" Par conséquent, j'ai écrit cette solution.
ercvs