Verwenden von Laravel Homestead: 'Keine Eingabedatei angegeben'

113

Ich bin neu in der Verwendung von Laravel und Homestead und würde mich über jede Hilfe oder einen Punkt in die richtige Richtung freuen. Ich konnte erfolgreich zum Bildschirm "Sie sind angekommen" gelangen, wenn ich "PHP Artisan Serve" ausführe, aber wenn ich versuche, dasselbe über Vagrant zu tun, wird "Keine Eingabedatei angegeben" angezeigt. Meine Datei Homestead.yaml sieht folgendermaßen aus:

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

Auf meinem Computer befinden sich folgende Verzeichnisse:

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

Auf meiner Vagrant Box habe ich aus irgendeinem Grund zwei Verzeichnisse mit den Namen "Code" und "Code":

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

Ich habe überprüft, und ich kann sehen, dass Änderungen an meinen Computer-Beispielprojektdateien in den Vagrant-Box-Dateien wiedergegeben werden.

Ich bin mir nicht sicher, wie ich das herausfinden soll !! Ich würde mich über jede mögliche Hilfe sehr freuen :)

Bryant
quelle

Antworten:

162

Anstatt neu zu installieren, versuchen Sie es

vagrant up --provision

oder

homestead up --provision
sleimanx2
quelle
1
vagrant up --provisionnicht für mich arbeiten, aber homestead up --provisionhat
zillaofthegods
Ich danke dir sehr!
Yohannan_sobin
1
Tu es einfach vagrant reload --proivision.
Omar Tariq
1
Diese Methode funktioniert auch Sie können versuchen, Vagabund zerstören und Vagabund auf, dann mache ich alle Konfigurationen und es ist viel sauberer.
George Plamenov Georgiev
Hallo, ich habe das gleiche Problem hier anstelle von Homestead Ich führe es in cpanel irgendwelche Vorschläge?
Aslam
45

Ich hatte genau das gleiche Problem und fand die Lösung durch die Verwendung von Larachat.

Hier erfahren Sie, wie Sie das Problem beheben können. Die Einstellungen für die Datei homestead.yaml müssen korrekt sein. Wenn Sie wissen möchten, wie es gemacht wird, folgen Sie dem Jeffery Way-Tutorial auf Homestead 2.0 https://laracasts.com/lessons/say-hello-to-laravel-homestead-two .

Um das Input not specifiedProblem zu beheben , müssen Sie in die Homestead-Box ssh und tippen

serve domain.app /home/vagrant/Code/path/to/public/directoryDadurch wird ein Serve-Skript für Nginx generiert. Sie müssen dies jedes Mal tun, wenn Sie ein Projekt wechseln.

Er diskutierte auch, was ich in dieser Serie erklärt habe: https://laracasts.com/series/laravel-5-fundamentals/

Rudy Jessop
quelle
2
Genau das habe ich gesucht. Danke Rudy!
Matthew Fritz
Ich denke, ein Problem tritt auf, wenn ein anderes Projekt in Homestead hinzugefügt wird, oder? Ist es nicht möglich, serveautomatisch für alle zu laufen ?
Volatil3
Vielen Dank, dass Sie das Tutorial geteilt haben. Habe es jetzt zum Laufen gebracht!
Dan Aronne
Mit einer Neuinstallation von Vagrant, Virtualbox, Homestead ... und dem Versuch, Destroy / Up zu verwenden, hat der Serve-Befehl endlich funktioniert. Vielen Dank
Chris
28

Dies ist einfach zu beheben, da Sie den Ordnernamen in: exampleproject geändert haben

Also SSH an deinen Landstreicher:

ssh vagrant@127.0.0.1 -p 2222

Dann ändern Sie Ihre Nginx-Konfiguration:

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

Bearbeiten Sie den richtigen URI im Stammverzeichnis in Zeile 3 mit dem neuen Ordnernamen :

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

Starten Sie Nginx neu

sudo service nginx reload

Laden Sie den Webbrowser neu, es sollte jetzt funktionieren

Truc
quelle
beste Antwort im ganzen Web für dieses Problem. ein dickes Lob!
Defkon1
Dies hat meinen Computer gesperrt. Wäre schön, wenn die Gründe für diese Befehle angegeben würden - genau warum sie benötigt werden und was sie tun.
Joshua Foxworth
24

Für mich hat folgendes funktioniert:

vagrant reload --provision

Dave Chambers
quelle
1
Dies funktionierte auch für mich, damit die Websites geladen wurden, nachdem ich das Basis-Host-Verzeichnis in Code anstelle von Webdesign geändert hatte. Vielen Dank! - rhand gerade jetzt bearbeiten
rhand
Es kann sich auch um ein Problem in Klein- oder Großbuchstaben in der Homestead.yamlDatei handeln. Zum Beispiel habe ich zugeordnet, /phpmyadminwann mein Verzeichnisname tatsächlich war phpMyAdmin.
Pathros
1
Der Grund, warum ich diese Lösung verwende, ist, dass meine Datenbankdaten intakt bleiben. Diese Lösung wird hier ausführlicher beschrieben: laracasts.com/discuss/channels/general-discussion/…
lwitzel
8

Ich gebe meine Antwort nur für den Fall, dass jemand mit diesem Problem zu kämpfen hat.

  1. Möglicherweise müssen Sie überprüfen, ob die server.root-Konfiguration in "/ etc / ngnx / sites-available / domain" mit Ihrer sites.to-Konfiguration in "Homestead.yaml" übereinstimmt.

  2. Wenn es nicht übereinstimmt, ändern Sie es und starten Sie den Webserver mit "sudo service nginx restart" neu.

  3. Und immer noch funktionieren die Dinge nicht. Dann erlauben Sie die Schreibberechtigung für den Ordner "YOURSITE / app / storage" als "chmod -R 777 app / storage".

Senthil
quelle
7

Ich hatte auch das gleiche Problem, ich hatte angenommen, dass Laravel "out of the box" installiert ist, aber es scheint, dass es nicht so ist. Ich habe mich an die Maschine gewandt und die folgenden Befehle ausgeführt:

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

Und alles lief wie gewohnt.

Arda
quelle
1
Danke Arda! Das ist der Schlüssel. Es hat ein paar Stunden gedauert :( Sie müssen in die virtuelle Maschine gehen und ausführen: Komponist erstellen-Projekt Laravel / Laravel Ordnername
gtamborero
1
Was es wichtig ist, mit dem Fehler "Keine Eingabedatei angegeben" zu verstehen, ist, auf Ihrem Host-Computer die Konfiguration von Homestead.yaml zu überprüfen -> Diese Datei enthält Ihre Site-Zuordnung (map: homestead.test to: / home / vagrant / code / public) Dies bedeutet, dass Sie Ihre HTML-PHP-Dateien dort haben müssen, wenn Sie zu Ihrer virtuellen Maschine zu root-> / home / vagrant / code / public / gehen. Wenn es keine gibt, führen Sie Folgendes aus: composer create-project laravel / laravel :) Wenn alles funktioniert, müssen Sie wissen, dass "~ /" "c: / windows / users / yourname /" bedeutet, damit Ihre sincronisierten Dateien angezeigt werden vom Landstreicher zu Ihrem Gastgeber
gtamborero
5

Dieses Problem trat bei mir nach der Bearbeitung von Homestead.yaml auf. Ich habe dieses Problem durch gelöst

homestead destroy
homestead up
Rayzor
quelle
Leider funktioniert das auch bei mir, was dazu führt, dass meine Datenbanken jedes Mal zerstört werden. Haben Sie eine Lösung dafür gefunden?
LoveAndHappiness
Möglicherweise können Sie stattdessen nur die Bereitstellung von Gehöften durchführen. Auch wenn Sie dies noch nicht getan haben, würde ich empfehlen, Seeders und Migrationen einzurichten, damit Sie die Datenbank weniger schützen können.
Rayzor
Dies behebt mein Problem: D, und das ist gut: laracasts.com/lessons/say-hello-to-laravel-homestead-two
Ihab Shoully
5

Ich hatte die gleichen Probleme

Aber vergessen, dass die Spezifikationen besagten, dass sich die Konfigurationsdatei unter befinden würde

~ / .homestead / Homestead.yaml und aktualisierte ~ / Homestead / src / stubs / Homestead.yaml

Das Update war also, die Homestead.yaml hier unter zu aktualisieren

~ / .homestead / Homestead.yaml

Vor

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

Nach dem

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

Dann rannte ich
vagrant up --provision

Hoffe, das funktioniert für alle anderen.

aufleuchten
quelle
3

Nachdem ich einige Verzeichnisse umbenannt hatte, musste ich Vagrant zerstören und erneut ausführen. Keine der Lösungen hier hat funktioniert.

Das hat bei mir funktioniert:

vagrant destroy
vagrant up
yper
quelle
1
Benutzer vagrant nicht zerstören, Vagrant anhalten verwenden, um Ihre virtuelle Maschine ordnungsgemäß herunterzufahren.
AbdulBasit
2

Starten Sie Ihr Gehöft neu. Hat für mich gearbeitet.

homestead destroy
homestead up
Selassie Twumasi
quelle
2

Ich hatte das gleiche Problem beim Befolgen der Laravel-Dokumente ( https://laravel.com/docs/5.2/homestead) ).

Mein Problem war sehr einfach, ich habe diesen Teil in den Dokumenten nicht gelesen:

Die Datei Homestead.yaml wird im versteckten Verzeichnis ~ / .homestead abgelegt:

Ich habe also die falsche Datei Homestead.yaml aktualisiert, da die Datei verschoben wurde, als ich den Befehl bash init.sh ausführte.

Ich habe das erst nach langem Suchen erkannt, also hoffe, das hilft jemandem.

Aljaydavids
quelle
2

Ich hatte nur mit der gleichen Situation zu kämpfen. Folgendes löste das Problem:

Wenn Sie eine Verzeichnisstruktur wie diese haben:

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

Erstellen Sie einfach den Ordner 'public' in exampleproject auf Ihrem Host-Computer.

Shreyansh Panchal
quelle
2

Ich verwende Windows 10 und habe die folgende Homestead-Konfiguration

---
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

Ich habe die Domäne homestead.local per PING bearbeitet und Ergebnisse erzielt.

Als ich jedoch http: //homestead.local in den Browser eingab, wurde der Fehler "Keine Eingabedatei angegeben" angezeigt

Ich habe den Code / öffentlichen Ordner überprüft und es gab keine Indexdatei. Ich war mir sicher, dass das System nach der Standarddatei suchte, die irgendwie fehlte.

Nachdem ich eine Indexdatei erstellt hatte, funktionierte sie einwandfrei.

Aktualisieren:

Das nächste Mal, wenn es nach einer Änderung in der Datei Homestead.yaml passiert ist , habe ich den vagrant reload --provisionBefehl ausgeführt und es hat funktioniert.

Es sieht so aus, als würde das Laufen vagrant reloadnur die Vagabundbox nicht bereitstellen. Lies hier

Nava Bogatee
quelle
1

Vorsicht, bei Linux wird zwischen Groß- und Kleinschreibung unterschieden. Das ist wahrscheinlich der Grund, warum Sie ein "Code" - und ein "Code" -Verzeichnis sehen.

Was ich tun würde, ist das Vagrant-Setup erneut zu wiederholen und wenn Sie es einfach halten und mit dem übereinstimmen möchten, was die Homestead-Box standardmäßig hat, machen Sie Ihr Verzeichnis in Ihrem Host-Computer "Code" in Großbuchstaben.

Sie können auch im Abschnitt "Ordner" einfach Ihrem "Code" -Ordner auf Ihrem Computer zuordnen, falls Sie später weitere Websites zu Ihrem Homestead-Setup hinzufügen möchten. Auf diese Weise sehen Sie unter / home / vagrant / Code / alle Ihre Site-Projekte und können weitere Sites bewerten, die auf ihre "öffentlichen" Verzeichnisse verweisen.

Noeldiaz
quelle
Danke, @noeldiaz! Gestern habe ich getan, was Sie gesagt haben. Ich habe vagrant erneut heruntergeladen, dann mein Homestead-Verzeichnis mit "rm -r Homestead" entfernt, dann vagrant up ausgeführt, und als ich das sah, wurde beim vagrant up-Verfahren einige zusätzliche Dinge ausgeführt, z. B. das Booten des Nginx-Servers. Als ich die Seite ausprobiert habe, hat es funktioniert! Auch das Ordnerproblem "Code" "Code" ist verschwunden :) Ich habe auch das getan, was Sie vorgeschlagen haben, was den Abschnitt "Ordner" betrifft. Ich / ich habe ein wenig Angst, da ich anscheinend nicht verstehe, wie man ein Problem mit dem Server / der virtuellen Box debuggt, aber ich werde weitermachen! Ich schätze Ihre Hilfe sehr :)
Bryant
1

Dies liegt wahrscheinlich daran, dass der Nginx-Webserver nicht auf den richtigen Pfad zeigt.

Es gibt zwei Schlüssel, die Sie sich ansehen sollten: den mapSchlüssel unter foldersund den toSchlüssel unter sites. Der foldersSchlüssel ordnet Ordner auf Ihrem lokalen Computer der vagabundierenden VM zu. Der sitesSchlüssel wird verwendet, um einen virtuellen Host auf nginx mit dem Wert in zu erstellen to.

Was Sie sicherstellen möchten, ist, dass tounter sitesPunkte auf den richtigen Weg zu public.

Das Problem war, dass ich mein Laravel-Projekt mit erstellt habe composer create laravel/laravel. Dadurch wurde in meinem aktuellen Verzeichnis ein Ordner mit dem Namen erstellt laravel. Dann habe ich, ohne die Verzeichnisse zu wechseln, den Homestead-Helfer mit installiert composer require laravel/homestead --dev.

Nach dem Ausführen php vendor/bin/homestead makeund vagrant upmeine Verzeichnisstruktur sah etwas wie folgt aus :

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

Mein Homestead.yml sah folgendermaßen aus:

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

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

Wenn Sie genau hinschauen, wird der /Users/USER/Sites/sandbox/php/laravel51Pfad auf der Vagrant-VM bereitgestellt. Dies ist das falsche Verzeichnis, da es auf das Laravel-Projektstammverzeichnis verweisen sollte, in dem sich Ihr App-Verzeichnis befindet. Was hier passierte war, dass ich den Homestead-Helfer benötigen sollte, während ich im Projektstamm war .

Die Frage ist nun, was mache ich? Sie haben zwei Möglichkeiten: Entfernen Sie Ihre aktuelle Homestead-VM und beginnen Sie von vorne, diesmal jedoch vom Projektstamm aus ODER retten Sie das, was Sie bereits haben.

Wenn Sie das retten möchten, was Sie haben, müssen Sie mehrere Dateien und einen Ordner in Ihr Laravel-Projektstammverzeichnis verschieben.

Dies sind die Artefakte, die Sie bewegen müssen:

.vagrant
Homestead.yml
Vagrantfile

Das composer.json wird nicht benötigt, da Sie es später benötigen.

Verschieben Sie diese Dateien in Ihr Laravel-Projektstammverzeichnis und ändern Sie Ihr aktuelles Arbeitsverzeichnis in dort ( cd laravel). Aktualisieren Sie zu diesem Zeitpunkt einfach das mapUnter foldersund stellen Sie sicher, dass es auf das Projektstammverzeichnis zeigt. Stellen Sie außerdem sicher, dass der toSchlüssel unter sitesder toSchlüssel unter istfolders mit ist/public ihm angehängt.

Beispielsweise:

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

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

Jetzt renn composer require laravel/homestead --dev so aus, dass der Homestead-Helfer in der Datei composer.json Ihres aktuellen Projekts benötigt und installiert wird.

Laufen vagrant reload --provisionSie und Sie sollten fertig sein.

2upmedia
quelle
1

Dies geschieht normalerweise, wenn Sie die Datei Homestead.yaml bearbeiten Datei .

Wenn du es wie ich versucht hast homestead up --provisionund nicht funktioniert hast! dann versuchen Sie dies (es funktioniert bei mir):

  • homestead destroy
  • homestead up
Mahmoud Zalt
quelle
1

Ältere Versionen von Homestead ordnen Ordner ~/Codebeispielsweise standardmäßig zu ~/Code/laravel/public. Beachten Sie die Groß- und Kleinschreibung in ~/Code. Diese unterscheiden zwischen Groß- und Kleinschreibung. Neue Versionen verwenden Kleinbuchstaben ~/code. Aktualisieren Sie diese Verzeichnisse in Ihren Homestead.yamlentsprechend Ihren tatsächlichen Verzeichnissen.

TL; DR;

Aktualisieren Sie ~/Codeauf ~/codeoder umgekehrt, abhängig von Ihren tatsächlichen Verzeichnisnamen.

Doncadavona
quelle
1

Gleiches Problem für mich.

Weder vagrant provisionnoch homestead up --provisionfür mich gearbeitet, aber das Folgende hat funktioniert - wahrscheinlich, da Homestead bereits ausgeführt wurde, als ich die yml-Datei geändert habe

vagrant reload --provision

nzbenny
quelle
0

In Laravel 5 musste ich in meinen Homestead-Server ssh und diese Befehle ausführen:

sudo chmod -R 777 storage
sudo chmod -R 777 bootstrap/cache
EvWill
quelle
0

Hier ist meine Lösung:

Es handelt sich um ein Dateipfadproblem. Nachfolgend sind meine Ordner- und Site-Pfade aufgeführt. Außerdem musste ich "Vagrant Destroy" verwenden, da die Bereitstellung nicht funktionierte.

Geben Sie hier die Bildbeschreibung ein

Matt Pierce
quelle
0

Mein Problem war in der Konfigurationsdatei der Domain:

Der öffentliche Ordner meines Projekts wurde in / home / vagrant / Code / demo / public erstellt

Die Konfigurationsdatei der Domain (für mich /etc/nginx/sites-available/demo.app) hatte Folgendes konfiguriert: "/ home / vagrant / Code / Laravel / public" anstelle von "/ home / vagrant / Code / demo / public" ".

Jetzt funktioniert es perfekt.

Engel Noriega
quelle
0

Ich hatte ähnliche Probleme mit Homestead und nur die Bereitstellung der Box hat für mich funktioniert. Also sollten Sie Folgendes versuchen:

vagrant provision

masummdar
quelle
0

vagrant provisionVerwandte Codes haben bei mir nicht funktioniert. Nach einiger Zeit habe ich das gesamte System neu gestartet. Jetzt gehts... -,-"

Giovannipds
quelle
0

I bearbeitet homestead.yamlund hostsgemäß diesem laracast tutorial und erneut gestartet homestead Verwendung vagrant suspend, vagrant haltetc. / vagrant up; Ich habe es auch versucht, bin vagrant provisionaber no file specifiederst nach dem Neustart meines Computers verschwunden (ich bin auf einem Windows 7-PC) verschwunden, nachdem ich alle oben genannten Schritte ausgeführt habe. Es ist sicherlich ein zeitaufwändiger und kniffliger Fehler.

So homestead.yamlsieht meine Arbeit für zwei Laravel-Projekte aus:

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

und hier ist meine hostsAkte:

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

Beachten Sie, dass es zwei separate Installationen von Laravel in gibt D:\Projects\ProjectOne undD:\Projects\ProjectTwo

Ich greife dann auf das erste Projekt zu, indem ich projectone.app:8000im Browser und tippeprojecttwo.app:8000 für das zweite Projekt tippe.

PS Ich habe dies für Laravel 5.2 unter Windows getestet

Arthur Tarasov
quelle
0

Dies liegt daran, dass Sie Ihren Nginx-Server ordnungsgemäß konfigurieren müssen, um Ihre Anwendung bedienen zu können. Sie können dies anhand dieses Handbuchs tun, beginnend mit dem Thema Konfigurieren von Nginx und dem Webstamm .

Nachdem Sie Ihre symbolische Verknüpfung zwischen / etc / nginx / sites-available und / etc / nginx / sites-enabled ordnungsgemäß konfiguriert haben , müssen Sie sicherstellen, dass Ihre Stammvariable auf den Ordnerpfad Ihrer Anwendung festgelegt ist. Stellen Sie Ihre Nginx-Wurzel von ein

root /usr/share/nginx/html;

zu

/home/vagrant/Projects/ProjectOne/public

Außerdem müssen Sie index.php vor Ihren HTML-Dateien platzieren, damit PHP vor HTML bereitgestellt wird. Ändere das

index index.html index.htm;

dazu

index index.php index.html index.htm;

Starten Sie nach Abschluss Ihrer Konfiguration Ihren Nginx-Server mit neu

sudo service nginx restart

Ihre Bewerbung sollte jetzt zugestellt werden.

Carlos Adames
quelle
0

Ich hatte so ein Problem. Ich habe die Datei Homestead.yaml überprüft und alle Dateien und alle Einstellungen waren korrekt. Mein Problem wurde nach den folgenden Schritten behoben.

1-Wenn Sie sich in der Befehlszeile von vagrant @ homestead: ~ $ befinden, geben Sie exitcommand ein.

2- Jetzt müssen Sie sich im Homestead-Ordner befinden. Führen Sie diesen Befehl aus

vagrant reload --provision

3- laufen vagrant ssh

Wenn Sie nun die zugehörige Adresse in Ihren Browser eingeben, sollte die Laravel-Seite angezeigt werden.

M Shafaei N.
quelle
0

Starten Sie Ihren Computer neu

Hatte ein funktionierendes Homestead, das lokal ausgeführt wurde, was irgendwann aufhörte und den Fehler "Keine Eingabedatei angegeben" erhielt. Ich konnte es nicht verfolgen.

Bei einem Neustart des Computers verschwand der Fehler.

MarsAndBack
quelle
0

Wenn Sie den Ordner mit Ihrem Homestead-Projekt umbenannt haben, wird diese Fehlermeldung angezeigt. Besuchen Sie Ihre Homestead.yamlDatei und aktualisieren Sie alle Verweise, um auf den umbenannten Ordner zu verweisen. Führen Sie dann vagrant up(usw.) erneut aus

Jack Kinsella
quelle
0

Wenn Sie eine neue Version von Larval 7> = verwenden, können Sie diese aus Ihrem Homested-Verzeichnis verwenden vagrant provision

weißer Hase
quelle