Utilizzando Laravel Homestead: "nessun file di input specificato"


113

Sono nuovo nell'usare Laravel e Homestead e apprezzerei qualsiasi aiuto o un punto nella giusta direzione. Sono riuscito ad arrivare alla schermata "Sei arrivato" quando eseguo "php artisan serve" ma quando provo a fare la stessa cosa tramite Vagrant, ottengo "nessun file di input specificato". Il mio file Homestead.yaml ha questo aspetto:

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

Sul mio computer ho le seguenti directory:

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

Sul mio Vagrant Box ho per qualche motivo due directory chiamate "codice" e "Codice":

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

Ho controllato e posso vedere le modifiche apportate ai file exampleproject del mio computer si riflettono nei file vagrant box.

Non sono proprio sicuro di come capirlo !! Apprezzerei davvero qualsiasi aiuto possibile :)

Risposte:


163

Invece di reinstallare, prova

vagrant up --provision

o

homestead up --provision

1
vagrant up --provisionnon ha funzionato per me, ma homestead up --provisionha funzionato
zillaofthegods

Grazie mille!
yohannan_sobin

1
Fallo e basta vagrant reload --proivision.
Omar Tariq

1
Questo metodo funziona anche tu puoi provare a distruggere vagabondo e vagabondare, quindi faccio tutte le configurazioni e molto più pulito.
George Plamenov Georgiev

ciao ho lo stesso problema qui invece di homestead lo eseguo in cpanel qualche suggerimento?
Aslam

45

Ho avuto lo stesso identico problema e ho trovato la soluzione attraverso l'uso di larachat.

Ecco come risolverlo è necessario che le impostazioni del file homestead.yaml siano corrette. Se vuoi sapere come è stato fatto, segui il tutorial di Jeffery Way su Homestead 2.0 https://laracasts.com/lessons/say-hello-to-laravel-homestead-two .

Ora per risolvere il Input not specifiedproblema devi ssh nella casella Homestead e digitare

serve domain.app /home/vagrant/Code/path/to/public/directoryquesto genererà uno script di servizio per nginx. Dovrai farlo ogni volta che cambi progetto.

Ha anche discusso di ciò che ho spiegato in questa serie https://laracasts.com/series/laravel-5-fundamentals/


2
Questo e 'esattamente quello che stavo cercando. Grazie Rudy!
Matthew Fritz

Immagino che il problema si verifichi se aggiungi un altro progetto in Homestead, giusto? Non è possibile eseguire serveautomaticamente per tutti?
Volatil3

Grazie per aver condiviso il tutorial. Ora funziona!
Dan Aronne

Con una nuova installazione di vagrant, virtualbox, homestead ... e cercando di distruggere / up, il comando serve è ciò che alla fine ha funzionato. Grazie
Chris

28

Questo è facile da risolvere, perché hai cambiato il nome della cartella in: exampleproject

Quindi SSH al tuo vagabondo:

ssh vagrant@127.0.0.1 -p 2222

Quindi modifica la configurazione di nginx:

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

Modifica l'URI corretto nella radice alla riga 3 con il nuovo nome della cartella :

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

Riavvia Nginx

sudo service nginx reload

Ricarica il browser web, dovrebbe funzionare ora


migliore risposta in tutto il web per questo problema. complimenti!
Defkon1

Questo ha bloccato il mio computer. Sarebbe bello se venissero fornite le ragioni di questi comandi - esattamente perché sono necessari e cosa stanno facendo.
Joshua Foxworth,

24

Per me ha funzionato quanto segue:

vagrant reload --provision


1
Questo ha funzionato anche per me per far sì che caricasse i siti dopo aver cambiato la directory host di base in Code anziché in webdesign. Grazie! - rhand modifica solo ora
rhand

Potrebbe anche essere un problema in minuscolo o maiuscolo nel Homestead.yamlfile. Ad esempio, stavo mappando /phpmyadminquando il nome della mia directory era effettivamente phpMyAdmin.
Pathros

1
Il motivo per cui utilizzo questa soluzione è che mantiene intatti i dati del database. Questa soluzione è descritta più dettagliatamente qui: laracasts.com/discuss/channels/general-discussion/…
lwitzel

8

Dando la mia risposta nel caso in cui qualcuno alle prese con questo problema.

  1. Potrebbe essere necessario verificare che la configurazione server.root in "/ etc / ngnx / sites-available / domain" corrisponda a sites.to config in "Homestead.yaml".

  2. Se non corrisponde, modificalo e riavvia il server web con "sudo service nginx restart"

  3. E ancora le cose non funzionano, quindi consenti l'autorizzazione di scrittura per la cartella "YOURSITE / app / storage" come "chmod -R 777 app / storage"


7

Ho anche avuto lo stesso problema, avevo pensato che Laravel fosse installato "out of the box" ma sembra che non lo sia. Sono andato in SSH alla macchina e ho eseguito questi comandi:

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

E tutto stava funzionando come al solito.


1
Grazie Arda! Questa è la chiave. Mi ci sono volute alcune ore :( Devi entrare nella macchina virtuale ed eseguire: composer create-project laravel / laravel folder-name
gtamborero

1
Quello che è importante capire con l'errore "Nessun file di input specificato", è guardare sulla tua macchina host la configurazione di Homestead.yaml -> Questo file contiene la mappatura dei tuoi siti (mappa: homestead.test su: / home / vagrant / code / public) Questo significa che se vai sulla tua macchina virtuale in root-> / home / vagrant / code / public / devi avere i tuoi file html php lì. Se non ci sono, esegui: composer create-project laravel / laravel :) Se tutto funziona devi sapere che "~ /" significa "c: / windows / utenti / tuonome /" quindi ci saranno i tuoi file sincronizzati dal vagabondo al tuo ospite
gtamborero

5

Questo problema si è verificato per me dopo aver modificato Homestead.yaml. Ho risolto questo problema da

homestead destroy
homestead up

purtroppo questo funziona anche per me, che si traduce nel fatto che i miei database vengono distrutti ogni volta. Hai trovato una soluzione per questo?
LoveAndHappiness

Potresti essere in grado di fare semplicemente "fornitura di fattoria" invece. Inoltre, se non lo hai già fatto, ti consiglio di impostare seeders e migrazioni in modo da poter essere meno protettivo del database.
Rayzor

Questo risolve il mio problema: D, e questo è buono: laracasts.com/lessons/say-hello-to-laravel-homestead-two
Ihab Shoully

5

Ho avuto gli stessi problemi

Ma ho dimenticato che le specifiche dicono che il file di configurazione si trova in

~ / .homestead / Homestead.yaml e stava aggiornando ~ / Homestead / src / stubs / Homestead.yaml

Quindi il FIX era di aggiornare Homestead.yaml che si trova qui a

~ / .Homestead / Homestead.yaml

Prima

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

Dopo

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

Poi ho corso
vagrant up --provision

Spero che questo funzioni per chiunque altro.


3

Dopo aver rinominato alcune directory, ho dovuto distruggere e rieseguire vagrant. Nessuna delle soluzioni qui ha funzionato.

Questo ha funzionato per me:

vagrant destroy
vagrant up

1
Non distruggere il vagabondo dell'utente, usa l'arresto del vagabondo per spegnere con grazia la tua macchina virtuale.
AbdulBasit


2

Ho avuto lo stesso problema mentre seguivo i documenti di Laravel ( https://laravel.com/docs/5.2/homestead )

Il mio problema era molto semplice, non ho letto questa parte nei documenti:

Il file Homestead.yaml verrà inserito nella directory nascosta ~ / .homestead:

Quindi stavo aggiornando il file Homestead.yaml sbagliato, poiché il file è stato spostato quando ho eseguito il comando bash init.sh.

L'ho capito solo dopo molte ricerche, quindi spero che questo possa aiutare qualcuno.


2

Stavo solo lottando con la stessa situazione. Di seguito è stato risolto il problema:

Se hai una struttura di directory come questa:

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

Basta creare una cartella "pubblica" all'interno di exampleproject sul computer host.


2

Sto usando Windows 10 e ho la seguente configurazione 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

Ho eseguito il ping del dominio homestead.local e ho ottenuto risultati.

Ma quando ho digitato http: //homestead.local nel browser, ho ricevuto l' errore "nessun file di input specificato"

Ho controllato il codice / cartella pubblica e non c'era alcun file di indice. Ero sicuro che il sistema stesse cercando il file predefinito che in qualche modo mancava.

Una volta creato un file di indice, ha iniziato a funzionare correttamente.

Aggiornare:

La prossima volta che è successo dopo una modifica nel file Homestead.yaml , ho eseguito il vagrant reload --provisioncomando e ha funzionato.

Sembra che vagrant reloadsolo correre non fornirà la scatola del vagabondo. Leggi qui


1

Un avvertimento, Linux fa distinzione tra maiuscole e minuscole. Questo è probabilmente il motivo per cui vedi una directory "Code" e una "code".

Quello che farei è rifare di nuovo la configurazione vagrant e se vuoi mantenerla semplice e abbinare ciò che la casella Homestead ha come impostazione predefinita, rendi la tua directory nella macchina host "Codice" con le maiuscole.

Puoi anche nella sezione "cartelle" mappare semplicemente la cartella "Codice" nella tua macchina, nel caso in cui decidi di aggiungere più siti alla configurazione di Homestead in un secondo momento. In questo modo in / home / vagrant / Code / vedrai tutti i progetti del tuo sito e potrai trovare più siti che puntano alle loro directory "pubbliche".


Grazie, @noeldiaz! Ieri ho finito per fare quello che hai detto. Ho scaricato di nuovo vagrant, poi ho rimosso la mia directory Homestead con "rm -r Homestead", poi ho fatto vagrant up, e quando l'ho fatto ho visto che la procedura di vagrant up eseguiva alcune cose aggiuntive come l'avvio del server nginx. Quando ho provato il sito ha funzionato! Inoltre, il problema della cartella "codice" "Codice" è andato via :) Ho fatto anche quello che hai suggerito, per quanto riguarda la sezione "cartelle". Sono un po 'spaventato, dal momento che sembra non capire come eseguire il debug del problema del server / scatola virtuale', ma continuerò! Apprezzo molto il tuo aiuto :)
bryant

1

Ciò è probabile perché il server Web nginx non punta al percorso corretto.

Ci sono due chiavi che dovresti guardare: la mapchiave sotto folderse la tochiave sotto sites. La folderschiave mappa le cartelle sulla tua macchina locale sulla VM vagabonda. La siteschiave viene utilizzata per creare un host virtuale su nginx con il valore in to.

Quello che vuoi assicurarti è che tosotto sitespunti sulla strada giusta per public.

Il problema era che ho creato il mio progetto Laravel con composer create laravel/laravel. Questo ha creato una cartella nella mia directory corrente denominata laravel. Quindi senza cambiare directory ho installato l'helper Homestead con composer require laravel/homestead --dev.

Dopo l'esecuzione php vendor/bin/homestead makee vagrant upla struttura della mia directory era simile a questa:

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

Il mio Homestead.yml aveva questo aspetto:

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

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

Se guardi da vicino, il /Users/USER/Sites/sandbox/php/laravel51percorso verrà montato sulla VM vagabonda. Questa è la directory sbagliata perché dovrebbe puntare alla radice del progetto laravel dove si trova la directory dell'app. Quello che è successo qui era che avrei dovuto richiedere l'aiutante della fattoria mentre ero nella radice del progetto .

Quindi ora la domanda è cosa devo fare? Hai due opzioni: sbarazzarti della tua attuale VM della fattoria e ricominciare da capo, ma questa volta dalla radice del progetto OPPURE salvare ciò che hai già.

Se vuoi salvare quello che hai, dovrai spostare diversi file e una cartella nella radice del tuo progetto laravel.

Questi sono gli artefatti che dovrai spostare:

.vagrant
Homestead.yml
Vagrantfile

Il composer.jsonnon sarà necessario in quanto sarete richiedendo un secondo momento.

Sposta quei file nella radice del tuo progetto laravel e cambia la tua directory di lavoro corrente in lì ( cd laravel). A quel punto basta aggiornare l' mapunder folderse assicurarsi che stia puntando alla radice del progetto. Assicurati anche che la tochiave sotto sitessia la tochiave sotto folderscon in /publicallegato.

Per esempio:

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

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

Ora esegui in composer require laravel/homestead --devmodo che l'helper homestead sia richiesto nel file composer.json del tuo progetto corrente e installato.

Corri vagrant reload --provisione dovresti essere pronto.


1

Questo di solito accade quando modifichi il file Homestead.yaml .

Se come me hai provato homestead up --provisione non ha funzionato! quindi prova questo (funziona per me):

  • homestead destroy
  • homestead up

1

Le versioni precedenti di Homestead mappa le cartelle in ~/Codeto say, ad esempio, per impostazione predefinita ~/Code/laravel/public. Notare le maiuscole del caso in ~/Code. Questi sono case sensitive. Le nuove versioni utilizzano lettere minuscole ~/code. Aggiorna queste directory in Homestead.yamlbase alle tue directory effettive.

TL; DR;

Aggiorna ~/Codea ~/codeo viceversa a seconda dei nomi di directory effettivi.


1

Lo stesso problema per me.

Nessuno dei due vagrant provisiono ha homestead up --provisionfunzionato per me, ma quanto segue ha funzionato, probabilmente poiché Homestead era già in esecuzione quando ho modificato il file yml

vagrant reload --provision


0

In Laravel 5 ho dovuto ssh nel mio server homestead ed eseguire questi comandi:

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

0

Ecco la mia soluzione:

È un problema di percorso del file, quindi di seguito sono riportati i percorsi delle mie cartelle e dei siti. Inoltre, ho dovuto usare "distruzione vagabonda" poiché l'approvvigionamento non funzionava.

inserisci qui la descrizione dell'immagine


0

Il mio problema era nel file di configurazione del dominio:

la cartella pubblica del mio progetto è stata creata in / home / vagrant / Code / demo / public

il file di configurazione del dominio (per me /etc/nginx/sites-available/demo.app) aveva configurato: "/ home / vagrant / Code / Laravel / public" invece di "/ home / vagrant / Code / demo / public ".

Ora funziona perfettamente.


0

Ho avuto problemi simili con Homestead e il solo provisioning della scatola ha funzionato per me. Quindi dovresti provare questo:

vagrant provision


0

vagrant provisioni codici correlati non hanno funzionato per me, dopo aver perso un po 'di tempo, ho riavviato l'intero sistema. Ora funziona... -,-"


0

Ho modificato homestead.yamle hostssecondo questa laracast esercitazione e fattoria riavviata tramite vagrant suspend, vagrant haltecc / vagrant up; Ho provato anche a farlo vagrant provision, ma no file specifiedsono andato via solo dopo aver riavviato il mio computer (sono su PC Windows 7) dopo aver eseguito tutto quanto sopra. È certamente un errore complicato e che richiede tempo.

Questo è l' homestead.yamlaspetto del mio lavoro per due progetti 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

ed ecco il mio hostsfile:

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

Nota, ci sono due installazioni separate di laravel in D:\Projects\ProjectOneeD:\Projects\ProjectTwo

Quindi accedo al primo progetto digitando projectone.app:8000nel browser e projecttwo.app:8000per il secondo progetto.

PS Ho provato questo per Laravel 5.2 su Windows


0

Ciò accade perché devi configurare correttamente il tuo server nginx per poter servire la tua applicazione. Puoi farlo seguendo questa guida, iniziando dall'argomento Configurazione di Nginx e Web Root .

Dopo aver configurato correttamente il collegamento simbolico tra / etc / nginx / sites-available e / etc / nginx / sites-enabled, è necessario assicurarsi che la variabile root sia impostata sul percorso della cartella dell'applicazione. Imposta la tua radice nginx da

root /usr/share/nginx/html;

per

/home/vagrant/Projects/ProjectOne/public

Inoltre, devi posizionare index.php prima dei tuoi file html in modo che php venga servito prima di html. Cambia questo

index index.html index.htm;

a questa

index index.php index.html index.htm;

Dopo aver terminato la configurazione, riavvia il tuo server nginx con

sudo service nginx restart

La tua richiesta dovrebbe essere pubblicata ora.


0

Ho avuto un tale problema. Ho esaminato il file Homestead.yaml e tutti i file e tutte le impostazioni erano corrette. Il mio problema è stato risolto dopo i seguenti passaggi.

1-Se ti trovi in ​​vagrant @ homestead: ~ $ riga di comando, digita exitcomando.

2- Ora devi essere nella cartella Homestead. eseguire questo comando

vagrant reload --provision

3- corri vagrant ssh

Ora se digiti l'indirizzo correlato nel tuo browser dovrebbe mostrare la pagina Laravel.


0

Prova a riavviare il computer

Aveva un Homestead funzionante in esecuzione localmente, che a un certo punto si è fermato e avrebbe ricevuto l'errore "Nessun file di input specificato". Non sono riuscito a rintracciarlo.

Con un riavvio del computer, l'errore è scomparso.


0

Se hai rinominato la cartella contenente il tuo progetto Homestead, riceverai questo errore. Visita il tuo Homestead.yamlfile e aggiorna i riferimenti in modo che puntino alla cartella rinominata, quindi vagrant upesegui di nuovo (ecc.)


0

Se stai usando una nuova versione di larval 7> = puoi usarla dalla tua directory homested vagrant provision

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.