Використання 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.