1
resposta

Dificuldades com autoload no PHP

Olá

Estou usando composer no meu projeto mas as classes que estou criando não estão encontrando o autoload. Recebi essa mensagem ao carregar o arquivo:

Warning: require_once(vendor/autoload.php): failed to open stream: No such file or directory in /Users/juliobarreto/Documents/sistemaLarco/src/teste.php on line 6

Fatal error: require_once(): Failed opening required 'vendor/autoload.php' (include_path='.:/usr/local/Cellar/php/7.4.11/share/php/pear') in /Users/juliobarreto/Documents/sistemaLarco/src/teste.php on line 6

A estrutura do meu projeto é assim: Vejam a localização do arquivo teste (que tem o arquivo que estou executando) e a localização do autoload.

Pasta raiz -> src -> teste.php
Pasta raiz -> vendor -> autoload.php

Já fiz o dumpautoload do composer pra atualizar o composer.json.

Alguma ideia?

1 resposta

Olá, Júlio. Tudo bem?

Primeiramente gostaria de pedir desculpas pela demora em dar um retorno em seu tópico.

O erro "failed to open stream: No such file or directory" acontece quando o PHP não consegue encontrar algum arquivo ou diretório, neste caso, o PHP não conseguiu localizar o arquivo autoload.php .

Sugiro que no arquivo teste.php você faça isso:

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

Com a expressão acima informamos com exatidão onde este arquivo está localizado, pois repare que você usa o require no arquivo teste.php que está localizado dentro da pasta src, e usamos "/../vendor/autoload.php" para dizer ao PHP que voltamos um diretório e acessamos a pasta vendor em busca do arquivo autoload.php.

Da forma que estava:

  • require_once(vendor/autoload.php): Você estava informando ao PHP que dentro da pasta src tinha um diretório vendor e dentro deste diretório tinha um arquivo com o nome de autoload.php**

  • Vale lembrar que DIR é uma constante mágica do PHP que é usada para para obter o diretório de trabalho do código atual.

Espero ter ajudado, bons estudos =)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓