Korzystanie z Laravel Homestead: „nie określono pliku wejściowego”

113

Jestem nowy w używaniu Laravel i Homestead i byłbym wdzięczny za każdą pomoc lub wskazówkę we właściwym kierunku. Udało mi się przejść do ekranu „Przybyłeś”, kiedy uruchamiam „php rzemieślniczy serwis”, ale kiedy próbuję zrobić to samo za pośrednictwem Vagranta, otrzymuję komunikat „nie określono pliku wejściowego”. Mój plik Homestead.yaml wygląda następująco:

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

Na swoim komputerze mam następujące katalogi:

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

Na moim Vagrant Boxie mam z jakiegoś powodu dwa katalogi o nazwach „kod” i „kod”:

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

Sprawdziłem i widzę, że zmiany dokonane w przykładowych plikach projektów mojego komputera są odzwierciedlone w plikach pola włóczęgi.

Nie bardzo wiem, jak to rozgryźć !! Byłbym wdzięczny za każdą możliwą pomoc :)

bryant
źródło

Odpowiedzi:

163

Zamiast ponownej instalacji try

vagrant up --provision

lub

homestead up --provision
sleimanx2
źródło
1
vagrant up --provisionnie działa dla mnie, ale homestead up --provisiontak
zillaofthegods
Dziękuję bardzo!
yohannan_sobin
1
Po prostu zrób vagrant reload --proivision.
Omar Tariq
1
Ta metoda działa również możesz spróbować włóczęgi niszczenia i włóczęgi, a potem robię wszystkie konfiguracje i jest to znacznie czystsze.
George Plamenov Georgiev
cześć mam tu ten sam problem zamiast homestead, uruchamiam go w cpanelu jakieś sugestie?
Aslam
45

Miałem dokładnie ten sam problem i znalazłem rozwiązanie za pomocą larachata.

Oto jak to naprawić, musisz mieć poprawne ustawienia pliku homestead.yaml. Jeśli chcesz wiedzieć, jak to się robi, postępuj zgodnie z samouczkiem Jeffery Way na homestead 2.0 https://laracasts.com/lessons/say-hello-to-laravel-homestead-two .

Teraz, aby naprawić Input not specifiedproblem, musisz ssh do pola homestead i wpisać

serve domain.app /home/vagrant/Code/path/to/public/directorywygeneruje to skrypt służący do nginx. Będziesz musiał to robić za każdym razem, gdy zmieniasz projekty.

Omówił również to, co wyjaśniłem w tej serii https://laracasts.com/series/laravel-5-fundamentals/

Rudy Jessop
źródło
2
To jest dokładnie to, czego szukałem. Dzięki Rudy!
Matthew Fritz
Myślę, że problem się pojawia, jeśli dodasz kolejny projekt w Homestead, prawda? Czy nie można uruchomić serveautomatycznie dla wszystkich?
Volatil3
Dzięki za udostępnienie samouczka. Teraz działa!
Dan Aronne
Dzięki nowej instalacji vagrant, virtualbox, homestead ... i próbie zniszczenia / upakowania, polecenie serv jest tym, co w końcu zadziałało. Dzięki
Chris
28

Jest to łatwe do naprawienia, ponieważ zmieniłeś nazwę folderu na: exampleproject

Więc SSH do twojego włóczęgi:

ssh vagrant@127.0.0.1 -p 2222

Następnie zmień konfigurację nginx:

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

Edytuj poprawny identyfikator URI do katalogu głównego w wierszu 3 do tego z nową nazwą folderu :

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

Uruchom ponownie Nginx

sudo service nginx reload

Załaduj ponownie przeglądarkę internetową, powinna teraz działać

Truc
źródło
najlepsza odpowiedź na ten problem w całej sieci. sława!
Defkon1
To zablokowało mój komputer. Byłoby miło, gdyby podano powody tych poleceń - dokładnie dlaczego są potrzebne i co robią.
Joshua Foxworth,
24

U mnie zadziałało:

vagrant reload --provision

Dave Chambers
źródło
1
Pomogło mi to również w załadowaniu witryn po zmianie podstawowego katalogu hosta na Code zamiast na projektowanie stron internetowych. Dzięki! - rhand właśnie teraz edytuj
rhand
Może to być również problem z małymi lub dużymi literami w Homestead.yamlpliku. Na przykład mapowałem, /phpmyadminkiedy to była moja nazwa katalogu phpMyAdmin.
Pathros
1
Powodem, dla którego używam tego rozwiązania, jest zachowanie danych w mojej bazie danych. To rozwiązanie opisano bardziej szczegółowo tutaj: laracasts.com/discuss/channels/general-discussion/…
lwitzel
8

Udzielam odpowiedzi na wszelki wypadek, gdyby ktoś borykał się z tym problemem.

  1. Może być konieczne sprawdzenie, czy konfiguracja server.root w „/ etc / ngnx / sites-available / domain” jest zgodna z konfiguracją sites.to w pliku „Homestead.yaml”.

  2. Jeśli nie pasuje, zmień go i uruchom ponownie serwer sieciowy za pomocą polecenia „sudo service nginx restart”

  3. I nadal coś nie działa, zezwól na zapis w folderze „TWOJA WITRYNA / aplikacja / magazyn” jako „chmod -R 777 app / storage”

Senthil
źródło
7

Miałem też ten sam problem, założyłem, że Laravel jest instalowany „po wyjęciu z pudełka”, ale wygląda na to, że tak nie jest. Podszedłem do maszyny i wykonałem następujące polecenia:

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

I wszystko szło jak zwykle.

Arda
źródło
1
Dzięki Arda! To jest klucz. Zajęło mi to kilka godzin :( Musisz wejść do maszyny wirtualnej i uruchomić: composer create-project laravel / laravel folder-name
gtamborero
1
W przypadku błędu „Nie określono pliku wejściowego” ważne jest, aby sprawdzić na komputerze głównym konfigurację Homestead.yaml -> Ten plik zawiera mapowanie witryn (map: homestead.test to: / home / vagrant / code / public) Oznacza to, że jeśli przejdziesz na swoją maszynę wirtualną do root-> / home / vagrant / code / public /, musisz mieć tam swoje pliki html php. Jeśli go tam nie ma, uruchom: composer create-project laravel / laravel :) Jeśli wszystko działa, musisz wiedzieć, że "~ /" oznacza "c: / windows / users / twoje imię /", więc będą twoje pliki zsincronizowane od włóczęgi do twojego gospodarza
gtamborero
5

Ten problem wystąpił po edycji pliku Homestead.yaml. Rozwiązałem ten problem przez

homestead destroy
homestead up
Rayzor
źródło
niestety to działa również dla mnie, co powoduje, że moje bazy danych są niszczone za każdym razem. Czy znalazłeś na to jakieś rozwiązanie?
LoveAndHappiness
Zamiast tego możesz po prostu zrobić `` zapewnienie gospodarstwa domowego ''. Jeśli jeszcze tego nie zrobiłeś, zalecam skonfigurowanie seederów i migracji, abyś mógł mniej chronić bazę danych.
Rayzor
To naprawi mój problem: D, i to dobrze: laracasts.com/lessons/say-hello-to-laravel-homestead-two
Ihab Shoully.
5

Miałem te same problemy

Ale zapomniałem, że specyfikacja mówi, że plik konfiguracyjny będzie znajdować się pod adresem

~ / .homestead / Homestead.yaml i aktualizowałem ~ / Homestead / src / stubs / Homestead.yaml

Więc FIX miał zaktualizować Homestead.yaml znajdujący się tutaj w

~ / .homestead / Homestead.yaml

Przed

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

Po

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

Potem uciekłem
vagrant up --provision

Mam nadzieję, że to zadziała dla każdego innego.

zapalić
źródło
3

Po zmianie nazw niektórych katalogów musiałem zniszczyć i ponownie uruchomić włóczęgę. Żadne z rozwiązań tutaj nie zadziałało.

To zadziałało dla mnie:

vagrant destroy
vagrant up
Rok Povsic
źródło
1
Nie niszcz włóczęgi użytkownika, używaj zatrzymania włóczęgi, aby bezpiecznie zamknąć maszynę wirtualną.
AbdulBasit
2

Zrestartuj swoje gospodarstwo. Pracował dla mnie.

homestead destroy
homestead up
Selassie Twumasi
źródło
2

Miałem ten sam problem podczas śledzenia dokumentacji Laravel ( https://laravel.com/docs/5.2/homestead )

Mój problem był bardzo prosty, brakowało mi przeczytania tej części w dokumentach:

Plik Homestead.yaml zostanie umieszczony w ukrytym katalogu ~ / .homestead:

Tak więc aktualizowałem zły plik Homestead.yaml, ponieważ plik został przeniesiony, gdy uruchomiłem polecenie bash init.sh.

Zrozumiałem to dopiero po wielu poszukiwaniach, więc mam nadzieję, że to komuś pomoże.

aljaydavids
źródło
2

Po prostu zmagałem się z tą samą sytuacją. Następujące rozwiązano problem:

Jeśli masz taką strukturę katalogów:

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

Po prostu utwórz folder „publiczny” w ramach przykładowego projektu na komputerze głównym.

Shreyansh Panchal
źródło
2

Używam systemu Windows 10 i mam następującą konfigurację 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

I PING ed domenę homestead.local i było uzyskanie wyników.

Ale kiedy wpisałem http: //homestead.local w przeglądarce, otrzymałem „nie określono pliku wejściowego” błąd

Sprawdziłem kod / folder publiczny i nie było pliku indeksu. Byłem pewien, że system szukał domyślnego pliku, którego w jakiś sposób brakowało.

Po utworzeniu pliku indeksu zaczął działać dobrze.

Aktualizacja:

Następnym razem, gdy stało się to po zmianie w pliku Homestead.yaml , uruchomiłem vagrant reload --provisionpolecenie i zadziałało.

Wygląda na to, że vagrant reloadsamo bieganie nie zapewni miejsca na włóczęgę. Przeczytaj tutaj

Nava Bogatee
źródło
1

Uwaga, linux rozróżnia wielkość liter. Prawdopodobnie dlatego widzisz katalog „Kod” i „Kod”.

To, co bym zrobił, to ponowić konfigurację włóczęgi ponownie i jeśli chcesz zachować prostotę i dopasować to, co domyślnie ma pole Homestead, utwórz katalog w "Kodzie" twojego komputera głównego z wielkimi literami.

Możesz także w sekcji „foldery” po prostu zmapować folder „Kod” na swoim komputerze, na wypadek gdybyś zdecydował się później dodać więcej witryn do konfiguracji Homestead. W ten sposób w / home / vagrant / Code / zobaczysz wszystkie projekty swojej witryny i możesz przypisać więcej witryn wskazujących na ich „publiczne” katalogi.

noeldiaz
źródło
Dzięki, @noeldiaz! Wczoraj zrobiłem to, co powiedziałeś. Ponownie pobrałem vagrant, potem usunąłem mój katalog Homestead za pomocą "rm -r Homestead", potem zrobiłem vagrant up, a kiedy to zrobiłem, zobaczyłem, że procedura vagrant up uruchomiła kilka dodatkowych rzeczy, takich jak uruchomienie serwera nginx. Kiedy wypróbowałem witrynę, zadziałało! Również problem z folderem „kod” zniknął :) Zrobiłem również to, co zasugerowałeś, jeśli chodzi o sekcję „foldery”. Trochę się boję, ponieważ wygląda na to, że nie rozumiem, jak rozwiązać problem z serwerem / skrzynką wirtualną ”, ale będę kontynuować! Naprawdę doceniam twoją pomoc :)
bryant
1

Jest to prawdopodobne, ponieważ serwer WWW nginx nie jest wskazuje właściwej ścieżki.

Są dwa klucze, na które powinieneś spojrzeć: mapklucz pod foldersi toklucz pod sites. foldersKlucz odwzorowuje foldery na komputerze lokalnym do Vagrant VM. sitesKlucz służy do tworzenia wirtualnego hosta na nginx z wartości to.

Chcesz się upewnić, że pozycja toponiżej siteswskazuje właściwą ścieżkę public.

Problem polegał na tym, że stworzyłem projekt laravela z composer create laravel/laravel. Spowodowało to utworzenie folderu w moim bieżącym katalogu o nazwie laravel. Następnie bez zmiany katalogów zainstalowałem pomocnika homestead z composer require laravel/homestead --dev.

Po uruchomieniu php vendor/bin/homestead makei vagrant upmoja struktura katalogów wyglądał mniej więcej tak:

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

Mój Homestead.yml wyglądał tak:

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

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

Jeśli przyjrzysz się uważnie, /Users/USER/Sites/sandbox/php/laravel51ścieżka zostanie zamontowana na włóczącej się maszynie wirtualnej. To jest zły katalog, ponieważ powinien wskazywać na katalog główny projektu Laravel, w którym znajduje się katalog aplikacji. To, co się tutaj stało, polegało na tym, że miałem potrzebować pomocnika zagrody, gdy byłem w katalogu głównym projektu .

Więc teraz pytanie brzmi, co mam zrobić? Masz dwie opcje: pozbądź się obecnej maszyny wirtualnej z homestead i zacznij od nowa, ale tym razem z katalogu głównego projektu LUB odzyskaj to, co już masz.

Jeśli chcesz uratować to, co masz, musisz przenieść kilka plików i folder do katalogu głównego projektu laravel.

Oto artefakty, które musisz przenieść:

.vagrant
Homestead.yml
Vagrantfile

Plik composer.json będzie potrzebne, ponieważ będziesz tego potrzebować później.

Przenieś te pliki do katalogu głównego projektu laravel i zmień tam obecny katalog roboczy ( cd laravel). W tym momencie po prostu zaktualizuj mapunder foldersi upewnij się, że wskazuje na katalog główny projektu. Upewnij się również, że toklucz pod sitesto toklucz pod foldersz /publicdołączonym do niego kluczem .

Na przykład:

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

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

Teraz uruchom composer require laravel/homestead --devtak, aby pomocnik homestead był wymagany w pliku composer.json bieżącego projektu i został zainstalowany.

Biegnij vagrant reload --provisioni wszystko powinno być gotowe.

2upmedia
źródło
1

Zwykle dzieje się tak podczas edycji pliku Homestead.yaml .

Jeśli tak jak ja próbowałeś homestead up --provisioni nie działałeś! następnie spróbuj tego (to działa dla mnie):

  • homestead destroy
  • homestead up
Mahmoud Zalt
źródło
1

Starsze wersje Homestead odwzorowują foldery ~/Codena przykład domyślnie ~/Code/laravel/public. Zwróć uwagę na kapitalizację przypadku w ~/Code. W tych jest rozróżniana wielkość liter. Nowe wersje używają małych liter ~/code. Zaktualizuj te katalogi w swoim Homestead.yamlzgodnie z rzeczywistymi katalogami.

TL; DR;

Zaktualizuj ~/Codedo ~/codelub odwrotnie, w zależności od rzeczywistych nazw katalogów.

doncadavona
źródło
1

Dla mnie ten sam problem.

Ani vagrant provisionalbo homestead up --provisionpracował dla mnie, ale nie poniżej - prawdopodobnie jako zagroda została już uruchomiona, kiedy zmodyfikowany plik yml

vagrant reload --provision

nzbenny
źródło
0

W Laravel 5 musiałem ssh na mój serwer homestead i uruchomić następujące polecenia:

sudo chmod -R 777 storage
sudo chmod -R 777 bootstrap/cache
EvWill
źródło
0

Oto moje rozwiązanie:

Jest to problem ze ścieżką pliku, więc poniżej znajdują się ścieżki moich folderów i witryn. Musiałem też użyć opcji „niszczenie włóczęgów”, ponieważ udostępnianie nie działało.

wprowadź opis obrazu tutaj

Matt Pierce
źródło
0

Mój problem był w pliku konfiguracyjnym domeny:

folder publiczny mojego projektu został utworzony w / home / vagrant / Code / demo / public

plik konfiguracyjny domeny (dla mnie /etc/nginx/sites-available/demo.app) miał skonfigurowany: "/ home / vagrant / Code / Laravel / public" zamiast "/ home / vagrant / Code / demo / public ”.

Teraz działa idealnie.

Angel Noriega
źródło
0

Miałem podobne problemy z Homestead i samo dostarczenie skrzynki zadziałało. Więc powinieneś spróbować tego:

vagrant provision

masummdar
źródło
0

vagrant provisionpowiązane kody nie działały u mnie, po straconym czasie zrestartowałem cały system. Teraz działa... -,-"

giovannipds
źródło
0

I edytowane homestead.yamli hostswedług tego poradnika laracast i ponownie używając zagrody vagrant suspend, vagrant haltitp / vagrant up; Też próbowałem vagrant provision, ale no file specifiedodszedłem dopiero po ponownym uruchomieniu komputera (jestem na komputerze z systemem Windows 7) po wykonaniu wszystkich powyższych czynności. Z pewnością jest to czasochłonny i trudny błąd.

Tak homestead.yamlwygląda moja praca przy dwóch projektach 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

a oto moja hoststeczka:

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

Uwaga, istnieją dwie oddzielne instalacje programu Laravel w D:\Projects\ProjectOneiD:\Projects\ProjectTwo

Następnie uzyskuję dostęp do pierwszego projektu, pisząc projectone.app:8000w przeglądarce i projecttwo.app:8000do drugiego projektu.

PS Przetestowałem to dla Laravel 5.2 w systemie Windows

Arthur Tarasov
źródło
0

Dzieje się tak, ponieważ musisz odpowiednio skonfigurować serwer nginx, aby obsługiwać aplikację. Możesz to zrobić postępując zgodnie z tym przewodnikiem, zaczynając od tematu Konfigurowanie Nginx i katalogu głównego sieci Web .

Po prawidłowym skonfigurowaniu dowiązania symbolicznego między / etc / nginx / sites-available i / etc / nginx / sites-enabled, należy upewnić się, że zmienna główna jest ustawiona na ścieżkę do folderu aplikacji. Ustaw swój katalog główny nginx z

root /usr/share/nginx/html;

do

/home/vagrant/Projects/ProjectOne/public

Ponadto musisz umieścić plik index.php przed plikami html, aby php był obsługiwany przed html. Zmień to

index index.html index.htm;

do tego

index index.php index.html index.htm;

Po zakończeniu konfiguracji zrestartuj serwer nginx z

sudo service nginx restart

Twoja aplikacja powinna zostać doręczona teraz.

Carlos Adames
źródło
0

Miałem taki problem. Sprawdziłem plik Homestead.yaml i wszystkie pliki i wszystkie ustawienia były poprawne. Mój problem zniknął po wykonaniu następujących czynności.

1-Jeśli jesteś w vagrant @ homestead: ~ $ wiersz poleceń, wpisz exitpolecenie.

2- Teraz musisz być w folderze Homestead. uruchom to polecenie

vagrant reload --provision

3-bieg vagrant ssh

Teraz, jeśli wpiszesz powiązany adres w przeglądarce, powinien wyświetlić się strona Laravel.

M Shafaei N
źródło
0

Spróbuj ponownie uruchomić komputer

Miał działające Homestead działające lokalnie, które w pewnym momencie zatrzymało się i powodował błąd „Nie określono pliku wejściowego”. Nie mogłem tego wytropić.

Po ponownym uruchomieniu komputera błąd zniknął.

MarsAndBack
źródło
0

Jeśli zmienisz nazwę folderu zawierającego projekt Homestead, pojawi się ten błąd. Odwiedź swój Homestead.yamlplik i zaktualizuj wszelkie odniesienia, aby wskazywały folder o zmienionej nazwie, a następnie wykonaj vagrant up(itd.) Ponownie

Jack Kinsella
źródło
0

Jeśli używasz nowej wersji larval 7> =, możesz użyć z katalogu domowego vagrant provision

biały Królik
źródło