require (vendor / autoload.php): falha ao abrir o fluxo

130

Sei que esse problema foi publicado muitas vezes, mas para mim parece um problema diferente.

De fato, esse erro

Aviso: require (vendor / autoload.php): falha ao abrir o fluxo: esse arquivo ou diretório não existe em C: \ xampp \ htdocs \ site_web \ send_mail.php na linha 3

Erro fatal: require (): Falha na abertura necessária 'vendor / autoload.php' (include_path = 'C: \ xampp \ php \ PEAR') em C: \ xampp \ htdocs \ site_web \ send_mail.php na linha 3

aparece no início do meu código a partir desta linha:

require 'vendor/autoload.php';

Então, acho que deve haver um arquivo /vendor/autoload.php em algum lugar do meu computador (instalei o compositor e executei composer require phpmailer/phpmailer).

Então, olhei para este arquivo usando: dir /s autoload.phpna linha de comando do Windows, e encontrou um aqui: C:\Windows\SysWOW64\vendor\autoload.php,

mas para mim, a pasta syswow64 não tem nada a ver com o autoload.php , não vejo o que estou perdendo aqui.

adrTuIPKJ44
fonte
Isso também pode ocorrer se você tiver o php artisan ativado ou desativado no arquivo composer.json na seção de scripts em pré-instalação. Parece precisar de arquivos na pasta do fornecedor para executar o modo de manutenção, que ainda não está disponível.
Thomas Thomas

Respostas:

232

O que está faltando está em execução composer install, o que importará seus pacotes e criará a pasta do fornecedor, junto com o script de carregamento automático.

Verifique se o caminho relativo está correto. Por exemplo, os scripts de exemplo no PHPMailer estão examples/, abaixo da raiz do projeto, portanto, o caminho relativo correto para carregar o carregador automático do compositor seria ../vendor/autoload.php.

O autoload.php que você encontrou C:\Windows\SysWOW64\vendor\autoload.phpprovavelmente é uma instalação global do compositor - onde você geralmente coloca itens como phpcs, phpunit, phpmd etc.

composer updatenão é a mesma coisa e provavelmente não é o que você deseja usar. Se o seu código for testado com as versões atuais do pacote, a execução updatepoderá causar quebras e exigir mais trabalho e teste, portanto, não execute a updatemenos que você tenha um motivo específico e compreenda exatamente o que isso significa. Para esclarecer mais, você provavelmente só deve executar composer updatelocalmente, nunca no servidor, pois é provável que interrompa os aplicativos em produção.

Muitas vezes vejo reclamações de que as pessoas não podem usar o compositor porque não podem executá-lo em seu servidor (por exemplo, porque é compartilhado e não tem acesso ao shell). Nesse caso, você ainda pode usar o compositer: execute-o localmente (um ambiente que não possui essas restrições) e faça o upload da pasta do fornecedor local que ele gera juntamente com todos os outros scripts PHP.

A execução composer update também executa ae composer install, se você não possui uma vendorpasta no momento (ou seja, você tem uma nova verificação de um projeto), composer installefetivamente executa uma composer update, mas ainda é vital entender a diferença entre as duas, pois elas definitivamente não são intercambiáveis.

Observe que também é possível atualizar um único pacote nomeando-o, por exemplo:

composer update ramsey/uuid

Isso irá resolver novamente a versão especificada no seu composer.jsone instalá-lo na pasta do fornecedor e atualizar seu composer.lockarquivo para corresponder. É muito menos provável que isso cause problemas do que um general, composer updatese você precisar apenas de uma atualização específica para um pacote.

O Composer 2.0 (disponível em breve) deve remover as inconsistências restantes entre os resultados da instalação e atualização.

Synchro
fonte
1
Como executo a instalação do compositor? Não é reconhecido como um comando
Yvonne Aburrow
obrigado, descobri e baixei - mas ele me pergunta onde o PHP está instalado localmente. Eu realmente não quero instalar o PHP localmente (ou Composer), apenas quero executá-lo no meu aplicativo Google Cloud.
Yvonne Aburrow
Estou seguindo as etapas desta documentação aqui: github.com/googlecloudplatform/google-cloud-php
Yvonne Aburrow
1
O Google Cloud para PHP fornece ao compositor para instalar suas dependências, você só precisa configurá-lo, veja aqui: cloud.google.com/appengine/docs/flexible/php/…
Synchro
2
Sim, o Google Cloud precisará ser executado composer installe, em seguida, ele lerá o conteúdo do seu composer.jsonarquivo e instalará todas as suas dependências na vendorpasta. Se não estiver fazendo isso, só posso sugerir a leitura dos documentos que apontei e a verificação dupla de tudo. Esta é realmente a distinção entre "upload" e "implantação".
Synchro
39

Se você receber o erro também ao executar

composer install

Basta executar este comando primeiro

composer dump-autoload

Este comando irá limpar todos os arquivos compilados e seus caminhos.

mbouzahir
fonte
9

Primeiro, verifique se você instalou o compositor.

composer install

Se você já instalou, atualize o compositor.

composer update
IsharaNW
fonte
1
Esta resposta precisa de uma edição séria para ser útil ao usuário. Indique claramente suas sugestões e forneça exemplos de código que seriam úteis nessa situação.
Stefan Crain
8

autoload.phpConfiguração adequada :

A) Resposta rápida :

Seu caminho autoload.php está errado. ie C:\Windows\SysWOW64\vendor\autoload.php Até o momento: você precisa alterá-lo para:C:\Users\<Windows User Name>\vendor\autoload.php


B) Passos com o exemplo: Tomaremos o facebook / php-graph-sdk como exemplo; mude para Package Nameconforme necessário.

  1. Instale o composer.exe
  2. Abra o prompt do CMD. + R+ tipoCMD
  3. Execute este comando: composer require facebook/graph-sdk
  4. Inclua o caminho na sua página PHP: require_once 'C:\Users\<Windows User Name>\vendor\autoload.php';
  5. Defina a configuração Secretse Access Tokenpara o seu pacote ... etc.
  6. Feliz codinig.

C) Mais detalhes:

A instalação do compositor no Windows definirá esse caminho padrão para seus pacakges; você pode encontrá-los lá e incluir o caminho do carregador automático:

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

Para a mesma pergunta que você fez; a resposta foi esse caminho para o WAMP Server 64 BIT para Windows .

Então, simplesmente em seu aplicativo PHP, mude isso:

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

Para:

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

Encontre o nome de usuário do Windows emC:\Users\

Antes de tudo isso, como apontado anteriormente em B), você precisa executar este comando:

composer require <package name>

para facebook php SDK, por exemplo:

composer require facebook/graph-sdk

Obrigado por fazer esta pergunta; apreciado, pois me ajudou a corrigir um problema semelhante e terminou de escrever este tutorial simples.

wpcoder
fonte
5

Se você clonou seu projeto no Github ou o obteve de outro lugar, encontrará esse erro. Isso ocorre porque você está perdendo a pasta do fornecedor e outros arquivos. A pasta do fornecedor contém pacotes que dependem do seu projeto. As dependências do pacote são armazenadas no composer.jsonarquivo e a pasta foi excluída enquanto você empurra para o Github .

Corrija este erro simplesmente executando:

composer install

Então você receberá todos os ativos necessários para o seu projeto.

Anand Mainali
fonte
3

correr composer update. É isso aí

Bashir ahmad
fonte
6
Sim, isso já faz parte da resposta aceita. Qual o sentido de duplicá-lo?
Nico Haase
Também é um mau conselho, provavelmente interromperá um aplicativo em produção.
Synchro
2

Eu tinha esse caminho na minha máquina:

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

Então eu corri composer installou / e composer updateretornou este erro:

ErrorException ZipArchive::extractTo...

Esse erro ocorre porque seu caminho é muito longo, mudei para:

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

e trabalhou!

jjoselon
fonte
1

Consegui resolver removendo o compositor e reinstalando da maneira correta. Aqui está o que eu fiz:

Pude instalar o compositor para funcionar novamente. Encontrei minha resposta na parte inferior desta edição: https://github.com/composer/composer/issues/5510

nwolybug
fonte
1

Primeiro, revise a rota dentro do index.php

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

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

no meu caso, a rota não funcionou, tive que revisar os diretórios.

Diego Santa Cruz Mendezú
fonte
1

Na pasta do projeto, a pasta do fornecedor está ausente, e você recebeu este erro:

Aviso: require (vendor / autoload.php): falha ao abrir o fluxo: não existe esse arquivo ou diretório em

Quando você baixa o projeto através do git , o projeto é baixado sem a pasta do fornecedor

Você precisa /vendorporque todos os seus pacotes estão lá, incluindo todas as classes que o Laravel usa. O diretório do fornecedor contém suas dependências do Composer.

A solução é simples, basta executar este comando:

composer update --no-scripts 
composer update
  • composer update --no-scriptsIgnora a execução dos scripts definidos no composer.jsonarquivo.
  • composer updateEle atualizará suas dependências conforme elas são especificadas no composer.jsonarquivo.

Com este comando, você recriará a pasta do fornecedor em seu projeto e, depois disso, seu projeto começará a funcionar normalmente.

Udhav Sarvaiya
fonte
0

Haverá um diretório chamado "fornecedor" que precisa estar no diretório raiz se você tiver um repositório clonado e tentar configurar nesse momento esse tipo de erro.

O arquivo ".gitingore" escreveu um código para não incluir o diretório do fornecedor no GIT, portanto, após a clonagem do GIT, seu projeto enfrenta o problema do diretório do fornecedor ausente.

Depois de adicionar o diretório do fornecedor, seu projeto começará a funcionar novamente.

Ajay Gadhavana
fonte
0

Crie o arquivo composer.json com a biblioteca necessária para ex:

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

Execute o comando abaixo, onde existe compositer.json:

composer install

No caso de Drupal:

Use a pasta raiz da web do drupal para incluir o carregamento automático para ex:

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

No caso de outros sistemas: Use a variável ou o local da pasta raiz para incluir o autoload.php

Sameer Kumar Choudhary
fonte
0

Para mim Apenas execute este comando primeiro

composer dump-autoload

para adicionar uma pasta de fornecedor.

então execute este comando

composer update --no-scripts

para atualizar o compositor.

Nasser Albelbeisi
fonte
0

Este erro ocorre devido à falta de alguns arquivos e o principal motivo é " Compositor "

insira a descrição da imagem aqui

Primeiro, execute esses comandos no 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');"

Em seguida, crie um novo projeto de
exemplo:

D:/Laravel_Projects/New_Project
laravel new New_Project

Depois disso, inicie o servidor usando

php artisan serve
hexhad
fonte
-1

Altere a propriedade auto_prepend_file no php.ini

; Automatically add files before PHP document. 
;http://php.net/auto-prepend-file 
auto_prepend_file =
ercvs
fonte
Como isso se relaciona com a pergunta? Há uma resposta aceite com uma completamente outra solução
Nico Haase
Eu tive o seguinte erro nesta manhã. "Aviso: Desconhecido: falha ao abrir o fluxo: Não existe esse arquivo ou diretório em Desconhecido na linha 0". Portanto, escrevi esta solução.
21818 ercvs