require (vendor / autoload.php): no se pudo abrir la transmisión

130

Sé que este problema se ha publicado muchas veces, pero para mí parece ser un problema diferente.

De hecho, este error

Advertencia: require (vendor / autoload.php): no se pudo abrir la secuencia: No existe tal archivo o directorio en C: \ xampp \ htdocs \ site_web \ send_mail.php en la línea 3

Error fatal: require (): la apertura fallida requirió 'vendor / autoload.php' (include_path = 'C: \ xampp \ php \ PEAR') en C: \ xampp \ htdocs \ site_web \ send_mail.php en la línea 3

aparece al comienzo de mi código desde esta línea:

require 'vendor/autoload.php';

Entonces, supongo que debe haber un archivo /vendor/autoload.php en algún lugar de mi computadora (he instalado Composer y ejecuté composer require phpmailer/phpmailer).

Por lo tanto, busqué este archivo usando: dir /s autoload.phpen la línea de comandos de Windows, y encontré uno aquí: C:\Windows\SysWOW64\vendor\autoload.php,

pero para mí, la carpeta syswow64 no tiene nada que ver con autoload.php , no veo lo que me falta aquí.

adrTuIPKJ44
fuente
Esto también puede ocurrir si tiene php artisan arriba o abajo en su archivo composer.json en la sección de scripts en la preinstalación. Parece que necesita archivos en la carpeta del proveedor para ejecutar el modo de mantenimiento, que aún no está disponible.
Thomas

Respuestas:

232

Lo que falta es ejecutar composer install, lo que importará sus paquetes y creará la carpeta del proveedor, junto con el script de carga automática.

Asegúrese de que su ruta relativa sea correcta. Por ejemplo, los scripts de ejemplo en PHPMailer se encuentran examples/debajo de la raíz del proyecto, por lo que la ruta relativa correcta para cargar el cargador automático del compositor desde allí sería ../vendor/autoload.php.

El autoload.php que encontraste C:\Windows\SysWOW64\vendor\autoload.phpes probablemente una instalación global de compositores, donde generalmente colocarás cosas como phpcs, phpunit, phpmd, etc.

composer updateno es lo mismo, y probablemente no sea lo que quieres usar. Si su código se prueba con las versiones actuales de su paquete, la ejecución updatepuede causar roturas que pueden requerir más trabajo y pruebas, así que no lo ejecute a updatemenos que tenga una razón específica y entienda exactamente lo que significa. Para aclarar más, probablemente solo debería ejecutarse composer updatelocalmente, nunca en su servidor, ya que es probable que rompa las aplicaciones en producción.

A menudo veo quejas de que las personas no pueden usar Composer porque no pueden ejecutarlo en su servidor (por ejemplo, porque está compartido y no tienen acceso a shell). En ese caso, aún puede usar Composer: ejecútelo localmente (un entorno que no tenga tales restricciones) y cargue la carpeta del proveedor local que genera junto con todos sus otros scripts PHP.

La ejecución composer update también realiza un composer install, y si actualmente no tiene una vendorcarpeta (es decir, tiene un nuevo pago de un proyecto), composer installrealiza efectivamente un composer update, pero sigue siendo vital comprender la diferencia entre los dos, ya que definitivamente no son intercambiables.

Tenga en cuenta que también es posible actualizar un solo paquete nombrándolo, por ejemplo:

composer update ramsey/uuid

Esto volverá a resolver la versión especificada en su, la composer.jsoninstalará en la carpeta de su proveedor y actualizará su composer.lockarchivo para que coincida. Es mucho menos probable que cause problemas que un general composer updatesi solo necesita una actualización específica de un paquete.

Composer 2.0 (próximamente) debería eliminar cualquier inconsistencia restante entre los resultados de instalación y actualización.

Synchro
fuente
1
¿Cómo ejecuto la instalación del compositor? No se reconoce como un comando
Yvonne Aburrow
gracias, lo encontré y lo descargué, pero me pregunta dónde está instalado PHP localmente. Realmente no quiero instalar PHP localmente (o Composer) Solo quiero ejecutarlo en mi aplicación Google Cloud.
Yvonne Aburrow
Estoy siguiendo los pasos de este documento aquí: github.com/googlecloudplatform/google-cloud-php
Yvonne Aburrow
1
Google Cloud para PHP proporciona Composer para instalar sus dependencias, solo necesita configurarlo, consulte aquí: cloud.google.com/appengine/docs/flexible/php/…
Synchro
2
Sí, Google Cloud tendrá que ejecutarse composer instally luego leerá el contenido de su composer.jsonarchivo e instalará todas sus dependencias en la vendorcarpeta. Si no está haciendo eso, solo puedo sugerirle que lea los documentos que señalé y vuelva a verificar todo. Esta es realmente la distinción entre "cargar" y "implementación".
Synchro
40

Si obtiene el error también cuando ejecuta

composer install

Solo ejecuta este comando primero

composer dump-autoload

Este comando limpiará todos los archivos compilados y sus rutas.

mbouzahir
fuente
9

Primero asegúrese de haber instalado el compositor.

composer install

Si ya lo ha instalado, actualice el compositor.

composer update
IsharaNW
fuente
1
Esta respuesta necesita una edición seria para ser útil para un usuario. Indique claramente sus sugerencias y proporcione ejemplos de código que serían útiles en esta situación.
Stefan Crain
8

autoload.phpConfiguración adecuada :

A) Respuesta rápida :

Su ruta autoload.php es incorrecta. es decir. C:\Windows\SysWOW64\vendor\autoload.php Hasta la fecha: debe cambiarlo a:C:\Users\<Windows User Name>\vendor\autoload.php


B) Pasos con ejemplo: Tomaremos facebook / php-graph-sdk como ejemplo; cambiar Package Namesegún sea necesario.

  1. Instalar composer.exe
  2. Abra el mensaje CMD. + R+ tipoCMD
  3. Ejecute este comando: composer require facebook/graph-sdk
  4. Incluya la ruta en su página PHP: require_once 'C:\Users\<Windows User Name>\vendor\autoload.php';
  5. Defina la configuración Secretsy Access Tokenpara su paquete ... etc.
  6. Feliz codinig.

C) Más detalles:

La instalación de Composer en Windows establecerá esta ruta predeterminada para sus paquetes; puedes encontrarlos allí e incluir la ruta del autocargador:

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

Por la misma pregunta que hiciste; la respuesta fue esta ruta para WAMP Server 64 BIT para Windows .

Luego, simplemente en su aplicación PHP, cambie esto:

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

A:

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

Encuentra tu nombre de usuario de Windows enC:\Users\

Antes de todo esto, como se señaló anteriormente en B), debe ejecutar este comando:

composer require <package name>

para Facebook php SDK por ejemplo:

composer require facebook/graph-sdk

Gracias por hacer esta pregunta; apreciado ya que me ayudó a solucionar un problema similar y terminé de escribir este sencillo tutorial.

wpcoder
fuente
5

Si ha clonado su proyecto de Github o lo obtuvo de otro lugar, encontrará este error. Esto se debe a que falta la carpeta del proveedor y otros archivos. La carpeta del proveedor contiene paquetes que dependen de su proyecto. Las dependencias del paquete se almacenan en un composer.jsonarchivo y la carpeta se excluyó al presionar a Github .

Solucione este error simplemente ejecutando:

composer install

Entonces obtendrá todos los activos necesarios para su proyecto.

Anand Mainali
fuente
3

ejecutar composer update. Eso es

Bashir ahmad
fuente
66
Sí, eso ya es parte de la respuesta aceptada. ¿Cuál es el punto en duplicarlo?
Nico Haase
También es un mal consejo, es probable que rompa una aplicación en producción.
Synchro
2

Tenía este camino en mi máquina:

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

Luego ejecuté composer installo / y composer updatedevolvió este error:

ErrorException ZipArchive::extractTo...

Ese error se debe a que su camino es demasiado largo, cambié a:

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

y trabajado!

jjoselon
fuente
1

Pude resolver quitando el compositor y reinstalando de la manera correcta. Aquí esta lo que hice:

Luego pude hacer que la instalación del compositor volviera a funcionar. Encontré mi respuesta al final de este problema: https://github.com/composer/composer/issues/5510

nwolybug
fuente
1

Primero, revise la ruta dentro de index.php

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

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

en mi caso la ruta no funcionó, tuve que revisar los directorios.

Diego Santa Cruz Mendezú
fuente
1

En la carpeta de su proyecto, falta la carpeta del proveedor, por lo que recibió este error:

Advertencia: require (vendor / autoload.php): no se pudo abrir la secuencia: No existe tal archivo o directorio en

Cuando descarga el proyecto a través de git , el proyecto se descarga sin la carpeta del proveedor

Lo necesita /vendorporque todos sus paquetes están ahí, incluidas todas las clases que usa Laravel. El directorio de proveedores contiene sus dependencias de Composer.

La solución es simple, solo ejecuta este comando:

composer update --no-scripts 
composer update
  • composer update --no-scriptsOmitirá la ejecución de scripts definidos en el composer.jsonarchivo.
  • composer updateActualizará sus dependencias tal como se especifican en el composer.jsonarchivo.

Con este comando, volverá a crear la carpeta del proveedor en su proyecto y luego su proyecto comenzará a funcionar normalmente.

Udhav Sarvaiya
fuente
0

Habrá un directorio llamado "proveedor" que debe estar en su directorio raíz si tiene un repositorio clonado e intenta configurar ese momento para que ocurra este tipo de error.

El archivo ".gitingore" tiene un código escrito para no incluir el directorio de proveedores en GIT, por lo que después de clonar GIT su proyecto enfrenta el problema de la falta del directorio de proveedores.

Una vez que agregue el directorio de proveedores, su proyecto comenzará a funcionar nuevamente.

Ajay Gadhavana
fuente
0

Cree el archivo composer.json con la biblioteca necesaria para, por ejemplo:

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

Ejecute el siguiente comando donde existe composer.json:

composer install

En caso de Drupal:

Use la carpeta raíz web de drupal para incluir la carga automática para ex:

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

En el caso de otros sistemas: utilice la variable o ubicación de la carpeta raíz para incluir autoload.php

Sameer Kumar Choudhary
fuente
0

Para mí, solo ejecuta este comando primero

composer dump-autoload

para agregar la carpeta del proveedor.

entonces ejecuta este comando

composer update --no-scripts

para actualizar el compositor.

Nasser Albelbeisi
fuente
0

Este error se produce porque faltan algunos archivos y la razón principal es " Composer "

ingrese la descripción de la imagen aquí

Primero ejecute estos comandos en 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');"

Luego cree un nuevo proyecto
Ejemplo:

D:/Laravel_Projects/New_Project
laravel new New_Project

Después de eso, inicie el servidor usando

php artisan serve
hexhad
fuente
-1

Cambie la propiedad auto_prepend_file en php.ini

; Automatically add files before PHP document. 
;http://php.net/auto-prepend-file 
auto_prepend_file =
ercvs
fuente
¿Cómo se relaciona esto con la pregunta? Hay una respuesta aceptada con una solución completamente diferente
Nico Haase
Tuve el siguiente error en esta mañana. "Advertencia: Desconocido: no se pudo abrir la secuencia: No existe tal archivo o directorio en Desconocido en la línea 0" Por lo tanto, escribí esta solución.
ercvs