Использование Laravel Homestead: 'входной файл не указан'

113

Я новичок в использовании Laravel и Homestead, и был бы признателен за любую помощь или указание в правильном направлении. Я успешно смог попасть на экран «Вы прибыли», когда запускаю «php artisan serve», но когда я пытаюсь сделать то же самое через Vagrant, я получаю «входной файл не указан». Мой файл 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 Box по какой-то причине есть два каталога с именами «code» и «Code»:

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

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

Не совсем уверен, как это понять !! Я был бы очень признателен за любую возможную помощь :)

Брайант
источник

Ответы:

163

Вместо переустановки попробуйте

vagrant up --provision

или

homestead up --provision
sleimanx2
источник
1
vagrant up --provisionне работает для меня, но homestead up --provisionничего
zillaofthegods
Спасибо вам большое!
yohannan_sobin 06
1
Просто сделай vagrant reload --proivision.
Омар Тарик
1
Этот метод работает, также вы можете попробовать vagrant destroy и vagrant up, тогда я сделаю все конфигурации, и он станет намного чище.
Георгий Пламенов Георгиев
привет, у меня такая же проблема, а не усадьба, я запускаю ее в cpanel какие-либо предложения?
Аслам
45

У меня была такая же проблема, и я нашел решение с помощью ларачата.

Вот как это исправить: вам нужно правильно настроить файл homestead.yaml. Если вы хотите узнать, как это делается, следуйте руководству Джеффри Уэй по усадьбе 2.0 https://laracasts.com/lessons/say-hello-to-laravel-homestead-two .

Теперь, чтобы исправить Input not specifiedпроблему, вам нужно ввести ssh в поле усадьбы и ввести

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

Он также обсудил то, что я объяснил в этой серии https://laracasts.com/series/laravel-5-fundamentals/

Руди Джессоп
источник
2
Это именно то, что я искал. Спасибо, Руди!
Мэтью Фриц
Я думаю, проблема возникает, если добавить еще один проект в Homestead, верно? Неужели нельзя запускать serveавтоматически для всех?
Volatil3
Спасибо, что поделились учебником. Теперь все работает!
Дэн Аронн,
После новой установки vagrant, virtualbox, homestead ... и попытки уничтожить / up команда serve - это то, что наконец сработало. Спасибо
Крис
28

Это легко исправить, потому что вы изменили имя папки на: exampleproject

Итак, SSH к вашему бродяге:

ssh vagrant@127.0.0.1 -p 2222

Затем измените конфигурацию nginx:

судо 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 вместо веб-дизайна. Спасибо! - 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 в "Homestead.yaml".

  2. Если он не совпадает, измените его и перезапустите веб-сервер с помощью «sudo service nginx restart»

  3. И все же что-то не работает, тогда разрешите разрешение на запись для папки «ВАШ САЙТ / приложение / хранилище» как «chmod -R 777 app / storage»

Senthil
источник
7

У меня тоже была такая же проблема, я предполагал, что Laravel установлен «из коробки», но, похоже, это не так. Я подключился к машине по SSH и выполнил следующие команды:

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

И все шло как обычно.

Арда
источник
1
Спасибо, Арда! Это ключ. На это у меня ушло несколько часов :( Вы должны войти в виртуальную машину и запустить: composer create-project laravel / laravel имя-папки
gtamborero
1
Что важно понимать с ошибкой «Не указан входной файл», так это посмотреть на вашем хост-компьютере конфигурацию Homestead.yaml -> Этот файл содержит отображение ваших сайтов (map: homestead.test to: / home / vagrant / code / public) Это означает, что если вы перейдете на свою виртуальную машину в root-> / home / vagrant / code / public /, у вас должны быть свои html-файлы php. Если их нет, запустите: composer create-project laravel / laravel :) Если все работает, то вы должны знать, что «~ /» означает «c: / windows / users / yourname /», так что там будут ваши синхронизированные файлы от бродяги до хозяина
gtamborero
5

Эта проблема возникла у меня после редактирования Homestead.yaml. Я решил эту проблему

homestead destroy
homestead up
Rayzor
источник
к сожалению, это работает и для меня, что приводит к тому, что мои базы данных каждый раз уничтожаются. Вы нашли для этого какое-нибудь решение?
LoveAndHappiness
Вместо этого вы могли бы просто заниматься «хозяйством». Также, если вы еще этого не сделали, я бы порекомендовал настроить сидеры и миграции, чтобы вы могли меньше защищать базу данных.
Rayzor
Это решит мою проблему: 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. Ни одно из решений здесь не сработало.

Это сработало для меня:

vagrant destroy
vagrant up
Рок Повшич
источник
1
Не уничтожайте бродячих пользователей, используйте бродячую остановку для корректного завершения работы вашей виртуальной машины.
АбдулБасит,
2

Перезагрузите свою усадьбу. Работал у меня.

homestead destroy
homestead up
Селассие Твумаси
источник
2

У меня была такая же проблема, когда я следил за документами Laravel ( https://laravel.com/docs/5.2/homestead )

Моя проблема была очень простой, я пропустил эту часть в документации:

Файл Homestead.yaml будет помещен в скрытый каталог ~ / .homestead:

Итак, я обновлял не тот файл Homestead.yaml, поскольку файл был перемещен, когда я запускал команду bash init.sh.

Я понял это только после долгих поисков, так что надеюсь, что это кому-то поможет.

aljaydavids
источник
2

Я просто боролся с той же ситуацией. Следующее решило проблему:

Если у вас есть такая структура каталогов:

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

Просто создайте «общедоступную» папку в 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

Я PING отредактировал домен homestead.local и получил результаты.

Но когда я набрал http: //homestead.local в браузере, я получил ошибку «не указан входной файл»

Я проверил код / ​​общую папку и не нашел индексного файла. Я был уверен, что система искала файл по умолчанию, который почему-то отсутствовал.

Как только я создал индексный файл, он начал работать нормально.

Обновить:

В следующий раз, когда это произошло после изменения файла Homestead.yaml , я запустил vagrant reload --provisionкоманду, и она сработала.

Похоже, что vagrant reloadтолько запуск не предоставит бродячий ящик. Читать здесь

Нава Богати
источник
1

Предупреждение, Linux чувствителен к регистру. Вероятно, поэтому вы видите каталоги «Код» и «Код».

Что я бы сделал, так это переделал бы настройку бродяги снова, и если вы хотите, чтобы она была простой и соответствовала тому, что по умолчанию установлено в поле Homestead, сделайте свой каталог на вашем хост-компьютере «Кодом» с прописными буквами.

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

noeldiaz
источник
Спасибо, @noeldiaz! Вчера я сделал то, что ты сказал. Я снова загрузил vagrant, затем удалил свой каталог Homestead с помощью "rm -r Homestead", затем сделал vagrant up, и когда я это сделал, я увидел, что процедура vagrant up запустила некоторые дополнительные вещи, такие как загрузка сервера nginx. Когда я попробовал сайт, все заработало! Кроме того, исчезла проблема с папкой "код" и "Код" :) Я сделал то, что вы предлагали, в отношении раздела "папки". Я / ма немного напуган, так как, кажется, я не понимаю, как отлаживать проблему с сервером / виртуальным ящиком », но продолжу! Я очень ценю вашу помощь :)
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путь будет установлен на бродячую виртуальную машину. Это неправильный каталог, потому что он должен указывать на корень проекта laravel, где находится каталог вашего приложения. Здесь произошло то, что я должен был потребовать помощника по дому, пока я был в корне проекта .

Итак, теперь вопрос в том, что мне делать? У вас есть два варианта: избавиться от текущей домашней виртуальной машины и начать заново, но на этот раз из корня проекта ИЛИ спасти то, что у вас уже есть.

Если вы хотите спасти то, что у вас есть, вам придется переместить несколько файлов и папку в корень вашего проекта 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чтобы помощник homestead был необходим в файле composer.json вашего текущего проекта и был установлен.

Беги, vagrant reload --provisionи все должно быть готово.

2upmedia
источник
1

Обычно это происходит при редактировании файла Homestead.yaml .

Если, как и я, вы пробовали homestead up --provisionи не работали! затем попробуйте это (у меня это работает):

  • homestead destroy
  • homestead up
Махмуд Залт
источник
1

Старые версии Homestead отображают папки ~/Code, например, по умолчанию ~/Code/laravel/public. Обратите внимание на регистр букв в ~/Code. Они чувствительны к регистру. В новых версиях используется нижний регистр ~/code. Обновите эти каталоги в Homestead.yamlсоответствии с вашими фактическими каталогами.

TL; DR;

Обновите ~/Codeна ~/codeили наоборот в зависимости от ваших фактических имен каталогов.

Doncadavona
источник
1

То же самое для меня.

Ни то, vagrant provisionни другое не homestead up --provisionсработало для меня, но приведенное ниже - вероятно, поскольку усадьба уже была запущена, когда я изменил файл yml

vagrant reload --provision

nzbenny
источник
0

В Laravel 5 мне пришлось использовать ssh на моем домашнем сервере и выполнить следующие команды:

sudo chmod -R 777 storage
sudo chmod -R 777 bootstrap/cache
EvWill
источник
0

Вот мое решение:

Это проблема пути к файлу, поэтому ниже приведены пути к моим папкам и сайтам. Кроме того, мне пришлось использовать "vagrant destroy", поскольку подготовка не работала.

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

Мэтт Пирс
источник
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

masummdar
источник
0

vagrant provisionсвязанные коды не работали для меня, потеряв некоторое время, я перезапустил всю систему. Теперь это работает ... -, - "

giovannipds
источник
0

Я отредактировал homestead.yamlи в hostsсоответствии с этим учебником по ларакасту и перезапустил усадьбу, используя 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 и веб-корневого каталога .

После правильной настройки вашей символической ссылки между / etc / nginx / sites-available и / etc / nginx / sites-enabled вам необходимо убедиться, что ваша корневая переменная установлена ​​на путь к папке вашего приложения. Установите корень 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-Если вы находитесь в командной строке vagrant @ homestead: ~ $, введите exitкоманду.

2- Теперь вы должны быть в папке Homestead. запустите эту команду

vagrant reload --provision

3- запустить vagrant ssh

Теперь, если вы введете соответствующий адрес в своем браузере, он должен отобразить страницу Laravel.

M Shafaei N
источник
0

Попробуйте перезагрузить компьютер

Если бы работающий Homestead работал локально, который в какой-то момент останавливался и получал ошибку «Не указан входной файл». Я не мог его отследить.

При перезагрузке компьютера ошибка исчезла.

MarsAndBack
источник
0

Если вы переименовали папку, содержащую ваш проект Homestead, вы получите эту ошибку. Посетите свой Homestead.yamlфайл и обновите все ссылки, чтобы они указывали на переименованную папку, затем vagrant upповторите (и т. Д.) Снова.

Джек Кинселла
источник
0

Если вы используете новую версию larval 7> =, вы можете использовать из своего домашнего каталога vagrant provision

белый кролик
источник