Usando o Laravel Homestead: 'nenhum arquivo de entrada especificado'


113

Eu sou novo no uso do Laravel e Homestead, e apreciaria qualquer ajuda ou um ponto na direção certa. Consegui obter com sucesso a tela "Você chegou" quando executo "php artisan serve", mas quando tento fazer a mesma coisa através do Vagrant, obtenho "nenhum arquivo de entrada especificado". Meu arquivo Homestead.yaml se parece com este:

authorize: /Users/me/.ssh/id_rsa.pub

keys:
    - /Users/me/.ssh/id_rsa

folders:
    - map: /Users/me/code/exampleproject
      to: /home/vagrant/code/exampleproject

sites:
    - map: exampleproject.app
      to: /home/vagrant/code/exampleproject/public

variables:
    - key: APP_ENV
      value: local

No meu computador, tenho os seguintes diretórios:

/Users/me/code/Homestead
/Users/me/code/exampleproject //this is the directory created with composer

No meu Vagrant Box eu tenho por algum motivo dois diretórios chamados "code" e "Code":

/home/vagrant/code/exampleproject 
/home/vagrant/Code

Eu verifiquei e posso ver as alterações feitas em meus arquivos de projeto de exemplo de computador são refletidas nos arquivos vagrant box.

Não tenho certeza de como descobrir isso !! Eu realmente apreciaria qualquer ajuda possível :)

Respostas:


163

Em vez de reinstalar, tente

vagrant up --provision

ou

homestead up --provision

1
vagrant up --provisionnão funcionou para mim, mas homestead up --provisionfuncionou
zillaofthegods

Muito obrigado!
yohannan_sobin

1
Apenas faça vagrant reload --proivision.
Omar Tariq

1
Este método está funcionando também você pode tentar vagrant destroy e vagrant até então eu faço todas as configurações e fica muito mais limpo.
George Plamenov Georgiev

oi eu tenho o mesmo problema aqui em vez de homestead executá-lo no cpanel alguma sugestão?
Aslam

45

Eu tive exatamente o mesmo problema e encontrei a solução através do uso do larachat.

Veja como consertar você precisa ter as configurações do arquivo homestead.yaml corretas. Se você quiser saber como isso é feito, siga o tutorial do Jeffery Way no homestead 2.0 https://laracasts.com/lessons/say-hello-to-laravel-homestead-two .

Agora, para consertar o Input not specifiedproblema, você precisa entrar na caixa do domicílio e digitar

serve domain.app /home/vagrant/Code/path/to/public/directoryisso irá gerar um script de serviço para nginx. Você precisará fazer isso sempre que mudar de projeto.

Ele também discutiu o que expliquei nesta série https://laracasts.com/series/laravel-5-fundamentals/


2
Isso é exatamente o que eu estava procurando. Obrigado Rudy!
Matthew Fritz

Eu acho que o problema acontece se adicionar outro projeto em Homestead certo? Não é possível rodar serveautomaticamente para todos?
Volatil3,

Obrigado por compartilhar o tutorial. Já está funcionando!
Dan Aronne

Com uma nova instalação de vagrant, virtualbox, homestead ... e tentando destroy / up, o comando serve é o que finalmente funcionou. Obrigado
Chris

28

Isso é fácil de corrigir, porque você alterou o nome da pasta para: exampleproject

Então SSH para o seu vagabundo:

ssh vagrant@127.0.0.1 -p 2222

Em seguida, altere a configuração do nginx:

sudo vi /etc/nginx/sites-enabled/homestead.app

Edite o URI correto para a raiz na linha 3 com o novo nome da pasta :

root "/Users/MYUSERNAME/Code/exampleproject/public";

Reinicie o Nginx

sudo service nginx reload

Recarregue o navegador da web, ele deve funcionar agora


melhor resposta em toda a web para este problema. parabéns!
Defkon1

Isso bloqueou meu computador. Seria bom se as razões para esses comandos fossem fornecidas - exatamente por que eles são necessários e o que estão fazendo.
Joshua Foxworth

24

Para mim funcionou o seguinte:

vagrant reload --provision


1
Isso funcionou para mim também para fazer com que carregasse os sites depois de alterar o diretório base do host para Código em vez de webdesign. Obrigado! - rhand agora mesmo editar
rhand

Também pode ser um problema de letras minúsculas ou maiúsculas no Homestead.yamlarquivo. Por exemplo, eu estava mapeando para /phpmyadminquando meu nome de diretório era na verdade phpMyAdmin.
Pathros de

1
O motivo pelo qual uso essa solução é que ela mantém os dados do banco de dados intactos. Esta solução é descrita com mais detalhes aqui: laracasts.com/discuss/channels/general-discussion/…
lwitzel

8

Dando minha resposta apenas no caso de alguém lutando com esse problema.

  1. Você pode precisar verificar se a configuração server.root em "/ etc / ngnx / sites-available / domain" corresponde aos seus sites.to config em "Homestead.yaml".

  2. Se não corresponder, altere-o e reinicie o servidor da web com "sudo service nginx restart"

  3. E ainda assim as coisas não estão funcionando, então conceda permissão de gravação para a pasta "YOURSITE / app / storage" como "chmod -R 777 app / storage"


7

Eu também tive o mesmo problema, presumi que o Laravel já estava instalado "fora da caixa", mas parece que não. Fiz SSH para a máquina e executei estes comandos:

cd Code
sudo composer self-update #not necessary, but I did it anyways
composer create-project laravel/laravel Laravel --prefer-dist

E tudo estava funcionando normalmente.


1
Obrigado Arda! Essa é a chave. Levei algumas horas :( Você tem que entrar na Máquina Virtual e executar: composer create-project laravel / laravel folder-name
gtamborero

1
O que é importante entender com o erro "Nenhum arquivo de entrada especificado", é olhar em sua máquina host a configuração de Homestead.yaml -> Este arquivo contém o mapeamento de seus sites (mapa: homestead.test para: / home / vagrant / code / public) Isto significa que se você for para sua máquina virtual para root-> / home / vagrant / code / public / você terá que ter seus arquivos html php lá. Se não houver, execute: composer create-project laravel / laravel :) Se tudo funcionar, você deve saber que "~ /" significa "c: / windows / users / yourname /" para que haja seus arquivos sincronizados de vagrant para seu host
gtamborero

5

Esse problema ocorreu para mim depois de editar Homestead.yaml. Eu resolvi esse problema por

homestead destroy
homestead up

infelizmente isso funciona para mim também, o que resulta em meus bancos de dados serem destruídos todas as vezes. Você encontrou alguma solução para isso?
LoveAndHappiness

Você pode ser capaz de apenas fazer 'provisão de bem de família' em vez disso. Além disso, se ainda não o fez, eu recomendo configurar seeders e migrações para que você possa proteger menos o banco de dados.
Rayzor

Isso corrigiu meu problema: D, e isso é bom: laracasts.com/lessons/say-hello-to-laravel-homestead-two
Ihab Shoully

5

Eu tive os mesmos problemas

Mas esqueci que as especificações diziam que o arquivo de configuração estaria localizado em

~ / .homestead / Homestead.yaml e estava atualizando ~ / Homestead / src / stubs / Homestead.yaml

Portanto, o FIX foi atualizar o Homestead.yaml localizado aqui em

~ / .homestead / Homestead.yaml

Antes

sites: - map: homestead.app to: /home/vagrant/Laravel/public

Depois de

sites: - map: homestead.app to: /home/vagrant/Code/mysitename/public

Então eu corri
vagrant up --provision

Espero que funcione para mais alguém.


3

Depois de renomear alguns diretórios, tive que destruir e executar novamente o vagrant. Nenhuma das soluções aqui funcionou.

Isso funcionou para mim:

vagrant destroy
vagrant up

1
Não use o vagrant destroy, use o vagrant halt para desligar normalmente a sua máquina virtual.
AbdulBasit


2

Eu tive o mesmo problema ao seguir os documentos do Laravel ( https://laravel.com/docs/5.2/homestead )

Meu problema era muito simples, não li esta parte da documentação:

O arquivo Homestead.yaml será colocado no diretório oculto ~ / .homestead:

Então, eu estava atualizando o arquivo Homestead.yaml errado, já que o arquivo foi movido quando executei o comando bash init.sh.

Só percebi isso depois de muita pesquisa, então espero que isso ajude alguém.


2

Eu estava lutando com a mesma situação. O seguinte resolveu o problema:

Se você tiver uma estrutura de diretório como esta:

folders:
    - map: /Users/me/code/exampleproject
      to: /home/vagrant/code/exampleproject

Basta criar a pasta 'pública' dentro do exampleproject em sua máquina host.


2

Estou usando o Windows 10 e tem a seguinte configuração Homestead

---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa
folders:
    - map: ~/code               #folder in local computer where codes are stored eg, c:\xampp\htdocs\project1
      to: /home/vagrant/code    #folder in the VM where the above code will be mapped

sites:
    - map: homestead.local          #fake name of the site (redirect this domain to the above IP ie 192.168.10.10 in hosts file ie, c:\windows\system32\etc\hosts)
      to: /home/vagrant/code/public #complete path to index.php file in the local computer to be utilized by homestead.local 
databases:
    - homestead

Fiz PING para o domínio homestead.local e estava obtendo resultados.

Mas quando digitei http: //homestead.local no navegador, recebi o erro 'nenhum arquivo de entrada especificado'

Verifiquei o código / pasta pública e não havia nenhum arquivo de índice. Eu tinha certeza de que o sistema estava procurando o arquivo padrão que estava faltando.

Depois de criar um arquivo de índice, ele começou a funcionar bem.

Atualizar:

Da próxima vez que aconteceu depois de uma alteração no arquivo Homestead.yaml , executei o vagrant reload --provisioncomando e funcionou.

Parece que vagrant reloadapenas correr não irá provisionar a caixa vagrant. Leia aqui


1

Aviso: o linux diferencia maiúsculas de minúsculas. É provavelmente por isso que você vê um diretório "Código" e um "código".

O que eu faria é refazer a configuração do vagrant novamente e se você quiser mantê-la simples e combinando com o que a caixa Homestead tem como padrão, faça seu diretório em sua máquina host "Código" com letras maiúsculas.

Você também pode na seção "pastas" mapear apenas para sua pasta "Código" em sua máquina, caso você decida adicionar mais sites à configuração de Homestead posteriormente. Dessa forma, em / home / vagrant / Code / você verá todos os projetos de seu site e poderá atribuir mais sites apontando para seus diretórios "públicos".


Obrigado, @noeldiaz! Ontem acabei fazendo o que você disse. Eu baixei o vagrant novamente, então removi meu diretório Homestead com "rm -r Homestead", então fiz o vagrant up, e quando o fiz, vi que o procedimento vagrant up executava algumas coisas adicionais, como inicializar o servidor nginx. Quando experimentei o site funcionou! Além disso, o problema da pasta "código" "Código" foi embora :) Também fiz o que você sugeriu, no que diz respeito à seção "pastas". Estou um pouco assustado, pois parece que não entendo como depurar o problema do servidor / caixa virtual ', mas vou continuar! Agradeço muito a sua ajuda :)
bryant

1

Provavelmente, o servidor da web nginx não está apontando para o caminho correto.

Há duas chaves que você deve observar: a mapchave abaixo folderse a tochave abaixo sites. A folderschave mapeia pastas em sua máquina local para a VM vagrant. A siteschave é usada para criar um host virtual no nginx com o valor em to.

O que você quer ter a certeza é que tosob sitesaponta para o caminho certo para public.

O problema é que criei meu projeto laravel com composer create laravel/laravel. Isso criou uma pasta em meu diretório atual chamada laravel. Então, sem alterar os diretórios, instalei o ajudante de propriedade rural com composer require laravel/homestead --dev.

Depois de executar php vendor/bin/homestead makee vagrant upminha estrutura de diretório ficou mais ou menos assim:

$ cd laravel51
$ ls -a
.
..
.vagrant
laravel
composer.json
composer.lock
vendor
Homestead.yml
Vagrantfile 

My Homestead.yml era assim:

folders:
    - map: "/Users/USER/Sites/sandbox/php/laravel51"
      to: "/home/vagrant/laravel51"

sites:
    - map: laravel51
      to: "/home/vagrant/laravel51/public"

Se você olhar de perto, o /Users/USER/Sites/sandbox/php/laravel51caminho será montado na VM vagrant. Este é o diretório errado porque deveria estar apontando para a raiz do projeto laravel onde está o diretório do seu aplicativo. O que aconteceu aqui foi que eu deveria exigir o ajudante da propriedade rural enquanto estava na raiz do projeto .

Portanto, agora a questão é o que eu faço? Você tem duas opções: livrar-se de sua VM de domicílio atual e começar de novo, mas desta vez a partir da raiz do projeto OU recuperar o que você já tem.

Se você quiser recuperar o que possui, terá que mover vários arquivos e uma pasta para a raiz do projeto laravel.

Estes são os artefatos que você precisará mover:

.vagrant
Homestead.yml
Vagrantfile

O composer.jsonnão será necessário porque você o solicitará mais tarde.

Mova esses arquivos para a raiz do projeto laravel e altere o diretório de trabalho atual para lá ( cd laravel). Nesse ponto, basta atualizar o mapunder folderse certificar-se de que ele está apontando para a raiz do projeto. Certifique-se também de que a tochave abaixo sitesé a tochave folderscom /publicanexado a ela.

Por exemplo:

folders:
    - map: "/Users/USER/Sites/sandbox/php/laravel51/laravel"
      to: "/home/vagrant/laravel51"

sites:
    - map: laravel51
      to: "/home/vagrant/laravel51/public"

Agora execute composer require laravel/homestead --devpara que o ajudante de propriedade familiar seja necessário no arquivo composer.json do seu projeto atual e instalado.

Corra vagrant reload --provisione você deve estar pronto.


1

Isso geralmente acontece quando você edita o arquivo Homestead.yaml .

Se como eu você tentou homestead up --provisione não funcionou! então tente isto (funciona para mim):

  • homestead destroy
  • homestead up

1

Versões mais antigas de pastas de mapas de Homestead, ~/Codepor exemplo, por padrão ~/Code/laravel/public. Observe as maiúsculas e minúsculas em ~/Code. Eles são sensíveis a maiúsculas e minúsculas. As novas versões usam letras minúsculas ~/code. Atualize esses diretórios de Homestead.yamlacordo com seus diretórios reais.

TL; DR;

Atualize ~/Codepara ~/codeou vice-versa, dependendo dos nomes reais dos seus diretórios.


1

O mesmo problema para mim.

Nenhum vagrant provisionou homestead up --provisionfuncionou para mim, mas o abaixo funcionou - provavelmente porque o homestead já estava em execução quando modifiquei o arquivo yml

vagrant reload --provision


0

No Laravel 5, tive que fazer ssh no servidor de minha propriedade e executar estes comandos:

sudo chmod -R 777 storage
sudo chmod -R 777 bootstrap/cache

0

Esta é minha solução:

É um problema de caminho de arquivo, então abaixo estão os caminhos de minhas pastas e sites. Além disso, tive que usar "vagrant destroy" porque o provisionamento não funcionou.

insira a descrição da imagem aqui


0

Meu problema estava no arquivo de configuração do domínio:

a pasta pública do meu projeto foi criada em / home / vagrant / Code / demo / public

o arquivo de configuração do domínio (para mim /etc/nginx/sites-available/demo.app) configurou: "/ home / vagrant / Code / Laravel / public" em vez de "/ home / vagrant / Code / demo / public "

Agora está funcionando perfeitamente.


0

Eu tive problemas semelhantes com Homestead e apenas provisionar a caixa funcionou para mim. Então você deve tentar isto:

vagrant provision


0

vagrant provisioncódigos relacionados não funcionaram para mim, depois de perder algum tempo, reiniciei todo o sistema. Agora funciona ... -, - "


0

I editada homestead.yamle hostsde acordo com este tutorial laracast e herdade reiniciado usando vagrant suspend, vagrant haltetc. / vagrant up; Eu tentei vagrant provisiontambém, mas no file specifiedsó fui embora depois de reiniciar meu computador (estou usando um PC com Windows 7) depois de fazer todas as opções acima. Certamente é um erro demorado e complicado.

É assim que meu trabalho se homestead.yamlparece para dois projetos laravel:

ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
- ~/.ssh/id_rsa

folders:
    - map: D:\Projects
      to: /home/vagrant/Projects

sites:
    - map: projectone.app
      to: /home/vagrant/Projects/ProjectOne/public
    - map: projecttwo.app
      to: /home/vagrant/Projects/ProjectTwo/public

databases:
    - laraveldb

e aqui está meu hostsarquivo:

...
127.0.0.1       localhost
192.168.10.10   projectone.app
192.168.10.10   projecttwo.app

Observe, existem duas instalações separadas de laravel em D:\Projects\ProjectOneeD:\Projects\ProjectTwo

Em seguida, acesso o primeiro projeto digitando projectone.app:8000no navegador e projecttwo.app:8000para o segundo projeto.

PS Eu testei isso para Laravel 5.2 no Windows


0

Isso acontece porque você precisa configurar seu servidor nginx adequadamente para servir seu aplicativo. Você pode fazer isso seguindo este guia, começando no tópico Configure Nginx and the Web Root .

Depois de configurar corretamente o link simbólico entre o / etc / nginx / sites-available e / etc / nginx / sites-enabled, você precisa ter certeza de que a variável raiz está definida para o caminho da pasta do seu aplicativo. Defina sua raiz nginx de

root /usr/share/nginx/html;

para

/home/vagrant/Projects/ProjectOne/public

Além disso, você deve colocar index.php antes de seus arquivos html para que o php seja servido antes do html. Mude isso

index index.html index.htm;

para isso

index index.php index.html index.htm;

Depois de terminar a configuração, reinicie o servidor nginx com

sudo service nginx restart

Seu aplicativo deve ser servido agora.


0

Eu tive esse problema. Eu revisei o arquivo Homestead.yaml e todos os arquivos e todas as configurações estavam corretas. Meu problema foi removido após as etapas a seguir.

1-Se você estiver em vagrant @ homestead: ~ $ linha de comando, digite exitcomando.

2- Agora você deve estar dentro da pasta Homestead. execute este comando

vagrant reload --provision

3- correr vagrant ssh

Agora, se você digitar o endereço relacionado em seu navegador, ele deverá mostrar a página do Laravel.


0

Tente reiniciar seu computador

Tinha um Homestead funcionando localmente, que em algum ponto parou e receberia o erro "Nenhum arquivo de entrada especificado". Eu não consegui rastreá-lo.

Com a reinicialização do computador, o erro desapareceu.


0

Se você renomeou a pasta que contém seu projeto Homestead, receberá este erro. Visite seu Homestead.yamlarquivo e atualize todas as referências para apontar para a pasta renomeada e faça vagrant up(etc.) novamente


0

Se você está usando uma nova versão do larval 7> = você pode usar a partir do seu diretório vagrant provision

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.