require (vendor / autoload.php): Stream konnte nicht geöffnet werden

130

Ich weiß, dass dieses Problem schon oft veröffentlicht wurde, aber für mich scheint es ein anderes Problem zu sein.

In der Tat dieser Fehler

Warnung: require (vendor / autoload.php): Stream konnte nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis in C: \ xampp \ htdocs \ site_web \ send_mail.php in Zeile 3

Schwerwiegender Fehler: require (): Fehler beim Öffnen von 'vendor / autoload.php' (include_path = 'C: \ xampp \ php \ PEAR') in C: \ xampp \ htdocs \ site_web \ send_mail.php in Zeile 3

erscheint am Anfang meines Codes aus dieser Zeile:

require 'vendor/autoload.php';

Ich denke, irgendwo auf meinem Computer muss sich eine Datei /vendor/autoload.php befinden (ich habe Composer installiert und ausgeführt composer require phpmailer/phpmailer).

Also habe ich diese Datei mit: dir /s autoload.phpin der Windows-Befehlszeile gesucht und hier eine gefunden : C:\Windows\SysWOW64\vendor\autoload.php,

aber für mich, syswow64 Ordner hat nichts mit dem sehen autoload.php , ich sehe nicht , was ich hier fehlt.

adrTuIPKJ44
quelle
Dies kann auch auftreten, wenn Sie PHP Artisan in Ihrer composer.json-Datei im Abschnitt "Skripte" bei der Vorinstallation nach oben oder unten haben. Es scheint Dateien im Herstellerordner zu benötigen, um den Wartungsmodus auszuführen, der noch nicht verfügbar ist.
Thomas

Antworten:

232

Was Sie vermissen, wird ausgeführt composer install, wodurch Ihre Pakete importiert und der Herstellerordner zusammen mit dem Autoload-Skript erstellt werden.

Stellen Sie sicher, dass Ihr relativer Pfad korrekt ist. Die Beispielskripte in PHPMailer befinden sich beispielsweise examples/unterhalb des Projektstamms, sodass der richtige relative Pfad zum Laden des Composer-Autoloaders von dort aus vorhanden ist ../vendor/autoload.php.

Die autoload.php, die Sie in gefunden haben, C:\Windows\SysWOW64\vendor\autoload.phpist wahrscheinlich eine globale Composer-Installation - in der Sie normalerweise Dinge wie phpcs, phpunit, phpmd usw. ablegen.

composer updateist nicht dasselbe und wahrscheinlich nicht das, was Sie verwenden möchten. Wenn Ihr Code mit Ihren aktuellen Paketversionen getestet wird, updatekann das Ausführen zu Fehlern führen, die möglicherweise weitere Arbeiten und Tests erfordern. Führen updateSie ihn daher nur aus, wenn Sie einen bestimmten Grund haben und genau verstehen, was er bedeutet. Zur weiteren Verdeutlichung: Sie sollten wahrscheinlich immer nur composer updatelokal ausgeführt werden, niemals auf Ihrem Server, da es vernünftigerweise wahrscheinlich ist, dass Apps in der Produktion beschädigt werden.

Ich sehe oft Beschwerden, dass Leute Composer nicht verwenden können, weil sie es nicht auf ihrem Server ausführen können (z. B. weil es gemeinsam genutzt wird und sie keinen Shell-Zugriff haben). In diesem Fall Sie können noch Komponist verwenden: führen Sie es lokal (eine Umgebung , die keine solchen Beschränkungen hat), und die lokalen Anbieter laden Ordner , um ihn zusammen mit allen anderen PHP - Skripte generiert.

Laufen composer update auch führt eine composer install, und wenn Sie derzeit nicht über einen haben vendorOrdner (dh Sie haben eine neue Kasse eines Projekts), dann composer installführt effektiv ein composer update, aber es ist immer noch wichtig , den Unterschied zwischen den beiden zu verstehen , wie sie sind definitiv nicht austauschbar.

Beachten Sie, dass es auch möglich ist, ein einzelnes Paket zu aktualisieren, indem Sie es benennen, zum Beispiel:

composer update ramsey/uuid

Dadurch wird die in Ihrem angegebene Version erneut aufgelöst, composer.jsonin Ihrem Herstellerordner installiert und Ihre composer.lockDatei entsprechend aktualisiert . Dies ist weitaus weniger problematisch als allgemein, composer updatewenn Sie nur ein bestimmtes Update für ein Paket benötigen.

Composer 2.0 (bald verfügbar) sollte alle verbleibenden Inkonsistenzen zwischen Installations- und Aktualisierungsergebnissen beseitigen.

Synchro
quelle
1
Wie führe ich die Composer-Installation aus? Es wird nicht als Befehl erkannt
Yvonne Aburrow
danke, fand das und habe es heruntergeladen - aber es fragt mich, wo PHP lokal installiert ist. Ich möchte PHP nicht wirklich lokal (oder Composer) installieren, sondern nur in meiner Google Cloud-App ausführen.
Yvonne Aburrow
Ich
folge
1
Google Cloud für PHP bietet Composer, um seine Abhängigkeiten zu installieren. Sie müssen es nur einrichten. Siehe hier: cloud.google.com/appengine/docs/flexible/php/…
Synchro
2
Ja, Google Cloud muss ausgeführt werden composer installund liest dann den Inhalt Ihrer composer.jsonDatei und installiert alle Ihre Abhängigkeiten in dem vendorOrdner. Wenn dies nicht der Fall ist, kann ich nur vorschlagen, die Dokumente zu lesen, auf die ich hingewiesen habe, und alles noch einmal zu überprüfen. Dies ist wirklich die Unterscheidung zwischen "Upload" und "Bereitstellung".
Synchro
39

Wenn Sie den Fehler auch beim Ausführen erhalten

composer install

Führen Sie einfach zuerst diesen Befehl aus

composer dump-autoload

Dieser Befehl bereinigt alle kompilierten Dateien und ihre Pfade.

mbouzahir
quelle
9

Stellen Sie zunächst sicher, dass Sie den Composer installiert haben.

composer install

Wenn Sie bereits installiert haben, aktualisieren Sie den Composer.

composer update
IsharaNW
quelle
1
Diese Antwort muss ernsthaft bearbeitet werden, um für einen Benutzer hilfreich zu sein. Bitte geben Sie Ihre Vorschläge klar an und geben Sie Codebeispiele an, die in dieser Situation nützlich wären.
Stefan Crain
8

Richtige autoload.phpKonfiguration:

A) Schnelle Antwort :

Ihr autoload.php-Pfad ist falsch. dh. C:\Windows\SysWOW64\vendor\autoload.php Bisher: Sie müssen es ändern in:C:\Users\<Windows User Name>\vendor\autoload.php


B) Schritte mit Beispiel: Wir nehmen Facebook / PHP-Graph-SDK als Beispiel; nach Package NameBedarf ändern .

  1. Installieren Sie composer.exe
  2. Öffnen Sie die CMD-Eingabeaufforderung. + R+ TypCMD
  3. Führen Sie diesen Befehl aus: composer require facebook/graph-sdk
  4. Fügen Sie einen Pfad in Ihre PHP-Seite ein: require_once 'C:\Users\<Windows User Name>\vendor\autoload.php';
  5. Definieren Sie die Konfiguration Secretsund Access Tokenfür Ihr Paket ... usw.
  6. Viel Spaß beim Codinig.

C) Weitere Details:

Durch die Installation von Composer unter Windows wird dieser Standardpfad für Ihre Pakete festgelegt. Sie können sie dort finden und den Autoloader-Pfad angeben:

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

Für die gleiche Frage, die Sie gestellt haben; Die Antwort war dieser Pfad für WAMP Server 64 BIT für Windows .

Dann ändern Sie einfach in Ihrer PHP-Anwendung Folgendes:

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

Zu:

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

Finden Sie Ihren Windows-Benutzernamen unterC:\Users\

Zuvor müssen Sie, wie bereits in B) erwähnt, diesen Befehl ausführen:

composer require <package name>

für Facebook PHP SDK zum Beispiel:

composer require facebook/graph-sdk

Vielen Dank, dass Sie diese Frage gestellt haben. Ich schätze es, dass es mir geholfen hat, ein ähnliches Problem zu beheben, und dieses einfache Tutorial beendet hat.

wpcoder
quelle
5

Wenn Sie Ihr Projekt von Github geklont oder von einem anderen Ort erhalten haben, tritt dieser Fehler auf. Dies liegt daran, dass Sie den Herstellerordner und andere Dateien vermissen . Der Lieferantenordner enthält Pakete, die von Ihrem Projekt abhängig sind. Die Paketabhängigkeiten werden in gespeicherten composer.jsonDatei und der Ordner wurde ausgeschlossen , während auf Github schieben .

Beheben Sie diesen Fehler, indem Sie einfach Folgendes ausführen:

composer install

Dann erhalten Sie alle für Ihr Projekt benötigten Assets.

Anand Mainali
quelle
3

laufen composer update. Das ist es

Bashir ahmad
quelle
6
Ja, das ist schon Teil der akzeptierten Antwort. Was bringt es, es zu duplizieren?
Nico Haase
Es ist auch ein schlechter Rat, wahrscheinlich eine App in der Produktion zu brechen.
Synchro
2

Ich hatte diesen Pfad in meiner Maschine:

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

Dann lief ich composer installoder / und composer updateund es gab diesen Fehler zurück:

ErrorException ZipArchive::extractTo...

Dieser Fehler ist, weil Ihr Pfad zu lang ist. Ich habe geändert zu:

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

und gearbeitet!

jjoselon
quelle
1

Ich konnte das Problem beheben, indem ich den Komponisten entfernte und den richtigen Weg neu installierte. Folgendes habe ich getan:

  • sudo apt entfernen Komponisten
  • sudo apt autoclean && sudo apt autoremove
  • Global installiert mit den Anweisungen von: https://getcomposer.org/doc/00-intro.md Download von: https://getcomposer.org/installer globale Installation: mv composer.phar / usr / local / bin / composer ( Hinweis: Ich musste meine nach mv composer.phar / usr / bin / composer verschieben.

Ich konnte dann die Composer-Installation wieder zum Laufen bringen. Ich habe meine Antwort am Ende dieser Ausgabe gefunden: https://github.com/composer/composer/issues/5510

nwolybug
quelle
1

Überprüfen Sie zunächst die Route in index.php

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

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

In meinem Fall funktionierte die Route nicht, ich musste die Verzeichnisse überprüfen.

Diego Santa Cruz Mendezú
quelle
1

In Ihrem Projektordner fehlt der Herstellerordner, sodass folgende Fehlermeldung angezeigt wird:

Warnung: require (vendor / autoload.php): Stream konnte nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis in

Wenn Sie das Projekt über git herunterladen , wird das Projekt ohne den Herstellerordner heruntergeladen

Sie benötigen, /vendorweil alle Ihre Pakete vorhanden sind, einschließlich aller Klassen, die Laravel verwendet. Das Herstellerverzeichnis enthält Ihre Composer-Abhängigkeiten.

Die Lösung ist einfach: Führen Sie einfach diesen Befehl aus:

composer update --no-scripts 
composer update
  • composer update --no-scriptsDie Ausführung von in der composer.jsonDatei definierten Skripten wird übersprungen .
  • composer updateEs aktualisiert Ihre Abhängigkeiten, wie sie in der composer.jsonDatei angegeben sind .

Mit diesem Befehl erstellen Sie den Herstellerordner in Ihrem Projekt neu und danach funktioniert Ihr Projekt normal.

Udhav Sarvaiya
quelle
0

Es wird ein Verzeichnis namens "Vendor" geben, das sich in Ihrem Stammverzeichnis befinden muss, wenn Sie ein geklontes Repository haben und versuchen, diese Art von Fehler einzurichten.

Die Datei ".gitingore" enthält Code, der das Herstellerverzeichnis in GIT nicht enthält. Nach dem Klonen von GIT ist Ihr Projekt daher mit dem Problem eines fehlenden Herstellerverzeichnisses konfrontiert.

Sobald Sie das Herstellerverzeichnis hinzugefügt haben, funktioniert Ihr Projekt wieder.

Ajay Gadhavana
quelle
0

Erstellen Sie die Datei composer.json mit der erforderlichen Bibliothek, z.

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

Führen Sie den folgenden Befehl aus, wenn composer.json vorhanden ist:

composer install

Im Falle von Drupal:

Verwenden Sie den Webstammordner von drupal, um beispielsweise das automatische Laden einzuschließen:

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

Bei anderen Systemen: Verwenden Sie die Variable oder den Speicherort des Stammordners, um die Datei autoload.php einzuschließen

Sameer Kumar Choudhary
quelle
0

Für mich Führen Sie einfach zuerst diesen Befehl aus

composer dump-autoload

Herstellerordner hinzufügen.

Führen Sie dann diesen Befehl aus

composer update --no-scripts

Komponisten aktualisieren.

Nasser Albelbeisi
quelle
0

Dieser Fehler tritt auf, weil einige Dateien fehlen und der Hauptgrund " Composer " ist.

Geben Sie hier die Bildbeschreibung ein

Führen Sie diese Befehle zuerst in CMD aus

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');"

Dann ein neues Projekt erstellen
Beispiel:

D:/Laravel_Projects/New_Project
laravel new New_Project

Danach starten Sie den Server mit

php artisan serve
Hexhad
quelle
-1

Ändern Sie die Eigenschaft auto_prepend_file in der php.ini

; Automatically add files before PHP document. 
;http://php.net/auto-prepend-file 
auto_prepend_file =
ercvs
quelle
Wie hängt das mit der Frage zusammen? Es gibt eine akzeptierte Antwort mit einer völlig anderen Lösung
Nico Haase
Ich hatte heute Morgen den folgenden Fehler. "Warnung: Unbekannt: Stream konnte nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis in Unbekannt in Zeile 0" Deshalb habe ich diese Lösung geschrieben.
Ercvs