Використання Laravel Homestead: 'не вказано вхідний файл'


113

Я новачок у використанні Laravel та Homestead, і буду вдячний за будь-яку допомогу чи точку в правильному напрямку. Мені успішно вдалося потрапити на екран "Ви прибули", коли я запускаю "php artisan serve", але коли я намагаюся зробити те ж саме через Vagrant, я отримую "не вказаний файл вводу". Файл My Homestead.yaml виглядає так:

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

У мене на комп’ютері є такі каталоги:

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

У моїй коробці Vagrant я чомусь два каталоги з назвою "code" та "Code":

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

Я перевірив, і я можу побачити зміни, внесені до мого комп'ютера, приклади проектових файлів відображаються у файлах бродячого вікна.

Не дуже впевнений, як це зрозуміти !! Я дуже вдячний за будь-яку можливу допомогу :)

Відповіді:


163

Замість перевстановлення спробуйте

vagrant up --provision

або

homestead up --provision

1
vagrant up --provisionне працювало для мене, але все- homestead up --provisionтаки
zillaofthegods

Дуже дякую!
yohannan_sobin

1
Просто роби vagrant reload --proivision.
Омар Тарік

1
Цей метод працює, і ви можете спробувати знищити бродяг і блукати, тоді я роблю всі конфігурації, і це набагато чистіше.
Георгій Пламенов Георгієв,

привіт, у мене є та сама проблема тут замість садиби я запускаю в cpanel будь-які пропозиції?
Аслам

45

У мене була така ж точна проблема, і я знайшов рішення через використання larachat.

Ось, як це виправити, потрібно, щоб правильні налаштування вашого файлу homestead.yaml були правильними. Якщо ви хочете знати, як це зроблено, виконайте підручник з Джеффірі Шлях на садибі 2.0 https://laracasts.com/lessons/say-hello-to-laravel-homestead-two .

Тепер, щоб виправити Input not specifiedпроблему, вам потрібно ввести скриньку в садибний ящик і ввести

serve domain.app /home/vagrant/Code/path/to/public/directoryце створить сервісний скрипт для nginx. Вам потрібно буде робити це кожного разу, коли ви перемикаєте проекти.

Він також обговорив те, що я пояснив у цій серії https://laracasts.com/series/laravel-5-fundamentals/


2
Це саме те, що я шукав. Дякую Руді!
Меттью Фріц

Я думаю, що проблема трапиться, якщо додати ще один проект у Homestead? Чи неможливо serveавтоматично запуститись для всіх?
Volatil3

Дякуємо, що поділилися навчальним посібником. Зробив це зараз!
Ден Аронна

З новою установкою бродячого, віртуальної скриньки, садиби ... та спробою знищити / знищити команда serve - це те, що нарешті спрацювало. Спасибі
Кріс

28

Це легко виправити, оскільки ви змінили ім'я папки на: exampleproject

Тож SSH вашому бродячому:

ssh vagrant@127.0.0.1 -p 2222

Потім змініть конфігурацію nginx:

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

Відредагуйте правильний URI в корені в рядку 3 до цього з новою назвою папки :

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

Перезапустіть Nginx

sudo service nginx reload

Перезавантажте веб-браузер, він повинен працювати зараз


найкраща відповідь у всій мережі Інтернет на цю проблему. кудо!
Defkon1

Це заблокувало мій комп’ютер. Було б добре, якби були вказані причини цих команд - саме для чого вони потрібні і що вони роблять.
Джошуа Фоксворт

24

Для мене працювали наступні:

vagrant reload --provision


1
Це працювало і для мене, щоб завантажувати сайти після того, як я змінив базовий каталог хостів на Code замість webdesign. Дякую! - rhand зараз редагувати
rhand

Також це може бути проблема з малим або великим регістром у Homestead.yamlфайлі. Наприклад, я робив відображення, /phpmyadminколи це було моє ім’я каталогу phpMyAdmin.
Патрос

1
Причиною, що я використовую це рішення, є те, що він зберігає мої дані бази даних недоторканими. Це рішення більш докладно описано тут: laracasts.com/discuss/channels/general-discussion/…
lwitzel

8

Даю свою відповідь на випадок, якщо хтось бореться з цим питанням.

  1. Можливо, вам доведеться переконатися, що конфігурація server.root у "/ etc / ngnx / sites-available / domain" відповідає вашому sites.to config у "Homestead.yaml".

  2. Якщо його не відповідає, то змініть його та перезапустіть веб-сервер за допомогою "sudo service nginx restart"

  3. А все ще не працює, тоді дозвольте написати дозвіл на папку "YOURSITE / app / storage" як "chmod -R 777 app / storage"


7

У мене також була така ж проблема, я вважав, що Laravel встановлений "поза коробкою", але, здається, це не так. Я SSH'ed до машини та запустив наступні команди:

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

І все працювало як завжди.


1
Дякую Арда! Ось ключ. У мене пішло кілька годин :( Ви повинні зайти всередині Віртуальної машини і запустити: композитор створити-проект laravel / laravel folder-name
gtamborero

1
Що важливо розуміти з помилкою "Не вказано файл вхідного файлу", це подивитися на хост-машині конфігурацію Homestead.yaml -> Цей файл містить відображення ваших сайтів (map: homestead.test to: / home / vagrant / code . Якщо їх там немає, запустіть: composer create-project laravel / laravel :) Якщо все працює, то ви повинні знати, що "~ /" означає "c: / windows / users / yourname /", тож будуть ваші синхронізовані файли від бродячого до вашого господаря
gtamborero

5

Ця проблема сталася для мене після редагування Homestead.yaml. Я вирішив це питання до

homestead destroy
homestead up

на жаль, це працює і для мене, в результаті чого мої бази даних щоразу руйнуються. Ви знайшли рішення для цього?
LoveAndHappiness

Натомість ви можете просто зробити "надання садиби". Крім того, якщо ви ще цього не зробили, рекомендую налаштувати сівалки та міграції, щоб ви були менш захищеними від бази даних.
Райзор

Це вирішує мою проблему: D, і це добре: laracasts.com/lessons/say-hello-to-laravel-homestead-two
Ihab Shoully

5

У мене були ті самі проблеми

Але забув, що специфікації сказали, що файл конфігурації буде розташований у

~ / .homestead / Homestead.yaml і оновлювався ~ / Homestead / src / stubs / Homestead.yaml

Таким чином, виправлення повинно було оновити Homestead.yaml, розташований тут за адресою

~ / .homestead / Homestead.yaml

До цього

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

Після

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

Потім я побіг
vagrant up --provision

Сподіваюся, це працює для будь-кого іншого.


3

Після того, як я перейменував деякі каталоги, мені довелося знищувати і повторювати бродягу. Жодне з рішень тут не спрацювало.

Це працювало для мене:

vagrant destroy
vagrant up

1
Не користувач бродячий знищити, Використовуйте бродяжну зупинку для витонченого вимкнення вашої віртуальної машини.
AbdulBasit


2

У мене був той самий випадок під час дотримання документів Laravel ( https://laravel.com/docs/5.2/homestead )

Моя проблема була дуже простою, я пропустив прочитати цю частину в документах:

Файл Homestead.yaml буде розміщений у прихованому каталозі ~ / .homestead:

Тому я оновлював неправильний файл Homestead.yaml, оскільки файл переміщено, коли я запустив команду bash init.sh.

Я зрозумів це лише після багатьох пошуків, тому сподіваюся, що це комусь допоможе.


2

Я просто боровся з такою ж ситуацією. Після вирішення питання:

Якщо у вас така структура каталогів:

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

Просто створіть папку "public" у exampleproject на своєму хост-машині.


2

Я використовую Windows 10 і має таку конфігурацію 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

Я ПІНГ редагував домен hometead.local і отримував результати.

Але коли я набрав http: //homestead.local у браузері, я не отримав "жодного вхідного файлу" помилка

Я перевірив код / ​​загальну папку і не було файлу індексу. Я був впевнений, що система шукає файл за замовчуванням, який якось відсутній.

Як тільки я створив файл індексу, він почав працювати нормально.

Оновлення:

Наступного разу, коли це відбулося після зміни файлу Homestead.yaml , я запустив vagrant reload --provisionкоманду, і вона спрацювала.

Виглядає, що vagrant reloadтільки біг не забезпечить бродячого поля. Прочитайте тут


1

Слово обережності, Linux відрізняється від регістру. Можливо, тому ви бачите каталог "Код" та "Код".

Що б я зробив, це повторити налаштування бродячого знову, і якщо ви хочете, щоб це було просто і відповідати тому, що поле Homestead за замовчуванням, зробіть свій каталог у вашій хост-машині "Код" з великого регістру.

Ви також можете в розділі «папки» просто зіставити папку «Код» на своєму пристрої, якщо ви вирішите пізніше додати більше сайтів до налаштування Homestead. Таким чином, в розділі / home / vagrant / Code / ви побачите всі проекти своїх сайтів, і ви можете надати більше сайтів, що вказують на їх "загальнодоступні" каталоги.


Дякую, @noeldiaz! Вчора я закінчив робити те, що ти сказав. Я знову завантажив бродягу, потім видалив мій каталог Homestead з "rm -r Homestead", потім зробив бродягу, і коли я це зрозумів, що процедура vagrant up виконує деякі додаткові речі, такі як завантаження сервера nginx. Коли я спробував сайт, він працював! Також проблема з папкою "code" "Code" пішла :) Я зробив те, що ви запропонували, що стосується розділу "папки". Я / маю трохи злякався, оскільки, здається, я не розумію, як налагодити проблему сервера / віртуальної скриньки ', але продовжуватиметься! Я дуже вдячний за вашу допомогу :)
bryant

1

Це можливо, тому що веб-сервер nginx це не так вказує на правильний шлях.

Ви повинні переглянути дві клавіші: mapключ під foldersі toключ під sites. foldersКлюч відображає папки на локальному комп'ютері в бродячої VM. sitesКлюч використовується для створення віртуального хоста на Nginx зі значенням в to.

Те , що ви хочете , щоб переконатися в тому , що в toвідповідності з sitesточками на правильному шляху public.

Проблема полягала в тому, що я створив свій проект laravel composer create laravel/laravel. Це створило папку в моєму поточному каталозі з назвою laravel. Тоді, не змінюючи каталогів, я встановив помічник садиби composer require laravel/homestead --dev.

Після запуску php vendor/bin/homestead makeі vagrant upструктура мого каталогу виглядала приблизно так:

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

Мій Homestead.yml виглядав так:

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

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

Якщо ви придивитесь уважніше, /Users/USER/Sites/sandbox/php/laravel51шлях буде встановлений на бродячий VM. Це неправильний каталог, оскільки він повинен вказувати на корінь проекту laravel, де знаходиться каталог вашого додатка. Тут сталося те, що я повинен був вимагати помічника помічника, поки я був у корені проекту .

Тож тепер питання в тому, що мені робити? У вас є два варіанти: позбудьтеся від вашої поточної VM господарства та почніть спочатку , але цього разу від кореня проекту АБО врятуйте те, що у вас вже є.

Якщо ви хочете врятувати те, що у вас є, вам доведеться перемістити кілька файлів і папки до кореня проекту laravel.

Це артефакти, які вам потрібно буде перемістити:

.vagrant
Homestead.yml
Vagrantfile

Це composer.jsonне потрібно, оскільки ви будете вимагати його пізніше.

Перемістіть ці файли до кореня проекту laravel та змініть там свій поточний робочий каталог ( cd laravel). У цей момент просто оновіть mapнижче foldersі переконайтеся, що він вказує на корінь проекту. Також переконайтеся, що toключ під sites- toключ під, foldersта /publicдодається до нього.

Наприклад:

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

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

Тепер запустіть composer require laravel/homestead --devтак, щоб помічник домашнього господарства був потрібний у файлі composer.json поточного проекту та встановлений.

Біжи, vagrant reload --provisionі ти повинен бути все налаштовано.


1

Зазвичай це відбувається, коли ви редагуєте Homestead.yaml файлу .

Якщо ви, як я, ви намагалися homestead up --provisionі не працювали! то спробуйте це (це працює для мене):

  • homestead destroy
  • homestead up

1

Старіші версії Homestead відображають, ~/Codeнаприклад, за замовчуванням ~/Code/laravel/public. Зверніть увагу на випадкові капіталізації в ~/Code. Вони залежать від регістру. Нові версії використовують малі регістри ~/code. Оновіть ці каталоги у своїх Homestead.yamlвідповідно до власних каталогів.

TL; DR;

Оновлення ~/Codeдо ~/codeабо навпаки в залежності від фактичних імен каталогів.


1

Те саме питання для мене.

Ні vagrant provisionабо homestead up --provisionне працював для мене, але нижче зробив - ймовірно, садибу вже був запущений , коли я змінив YML файл

vagrant reload --provision


0

У Laravel 5 мені довелося зайти на свій домашній сервер і запустити ці команди:

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

0

Ось моє рішення:

Це проблема шляху файлу, тому нижче мої папки та контури сайтів. Крім того, мені довелося використовувати "знищення бродячих", оскільки забезпечення не працювало.

введіть тут опис зображення


0

Моя проблема полягала в конфігураційному файлі домену:

публічна папка мого проекту була створена в / home / vagrant / Code / demo / public

конфігураційний файл домену (для мене /etc/nginx/sites-available/demo.app) налаштував: "/ home / vagrant / Code / Laravel / public" замість "/ home / vagrant / Code / demo / public ".

Зараз це працює ідеально.


0

У мене були подібні проблеми з Homestead, і просто надання коробки працювало на мене. Тому слід спробувати це:

vagrant provision


0

vagrant provisionпов'язані коди не працювали для мене, після втраченого часу я перезапустив всю систему. Тепер це працює ... -, - "


0

Я відредагований , homestead.yamlі в hostsвідповідності з цим laracast підручник і перезапущений садибою використанням vagrant suspend, vagrant haltі т.д. / vagrant up; Я також спробував це зробити vagrant provision, але no file specifiedпішов лише після того, як перезавантажив комп'ютер (я на ПК з Windows 7), виконавши все вищезазначене. Це, безумовно, трудомістка та хитра помилка.

Ось як homestead.yamlвиглядає моя робота для двох проектів 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

і ось мій hostsфайл:

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

Зауважте, є дві окремі установки laravel в D:\Projects\ProjectOneіD:\Projects\ProjectTwo

Потім я отримую доступ до першого проекту, ввівши projectone.app:8000браузер та projecttwo.app:8000другий проект.

PS Я перевірив це на Laravel 5.2 на Windows


0

Це трапляється тому, що вам потрібно правильно налаштувати свій сервер nginx, щоб обслуговувати вашу програму. Зробити це можна, дотримуючись цього посібника, починаючи з теми Налаштування Nginx та Web Root .

Після належної налаштування символічного зв’язку між вашими / etc / nginx / сайтами доступними та / etc / nginx / включеними сайтами вам потрібно переконатися, що ваша коренева змінна встановлена ​​в шлях до папки вашої програми. Встановити корінь nginx з

root /usr/share/nginx/html;

до

/home/vagrant/Projects/ProjectOne/public

Крім того, ви повинні розмістити index.php перед вашими html-файлами, щоб PHP подався перед html. Змініть це

index index.html index.htm;

до цього

index index.php index.html index.htm;

Після завершення конфігурації перезавантажте сервер nginx

sudo service nginx restart

Ваша заявка має бути подана зараз.


0

У мене була така проблема. Я переглянув файл Homestead.yaml, і всі файли та всі налаштування були правильними. Мою проблему усунули після виконання наступних кроків.

1-Якщо ви знаходитесь у бродячому @ hometead: ~ $ командного рядка, введіть exit команду.

2- Тепер ви повинні бути всередині папки Homestead. запустіть цю команду

vagrant reload --provision

3- пробіг vagrant ssh

Тепер, якщо ви введете відповідну адресу у своєму браузері, вона повинна відображати сторінку Laravel.


0

Спробуйте перезапустити комп’ютер

Якби працююча Homestead працювала локально, яка в якийсь момент зупинилась і отримала б помилку "Не вказано вхідний файл" Я не міг простежити це.

При перезапуску комп'ютера помилка зникла.


0

Якщо ви перейменували папку, що містить ваш проект Homestead, ви отримаєте цю помилку. Зайдіть у свій Homestead.yamlфайл і оновіть будь-які посилання, щоб вказувати на перейменовану папку, а потім зробіть vagrant up(тощо) ще раз


0

Якщо ви використовуєте нову версію larval 7> = ви можете скористатися зі свого домашнього каталогу vagrant provision

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.