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

78

Я новичок в использовании 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

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

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

Теги:
vagrant
laravel-4

23 ответа

98
Лучший ответ

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

vagrant up --provision

или

homestead up --provision
  • 23
    или, если он уже запущен, просто "бродячее обеспечение"
  • 0
    Спасибо большое!
Показать ещё 6 комментариев
42

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

Здесь, как исправить это, вам нужно правильно изменить настройки файла homestead.yaml. Если вы хотите узнать, как это делается, следуйте руководству Jeffery Way по homestead 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, это создаст функцию script для nginx. Вам нужно будет делать это каждый раз, когда вы переключаете проекты.

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

  • 2
    Это именно то, что я искал. Спасибо, Руди!
  • 0
    офигенно, спасибо!
Показать ещё 6 комментариев
21

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

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

ssh [email protected] -p 2222

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

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

Измените правильный URI для корня в строке 3 для этого с новым именем папки:

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

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

sudo service nginx reload

Перезагрузите веб-браузер, теперь он должен работать

  • 0
    Мне помог этот ответ ( the correct URI )
  • 0
    лучший ответ во всей сети для этой проблемы. престижность!
Показать ещё 2 комментария
8

Предоставление моего ответа на всякий случай, если кто-то борется с этой проблемой.

  • Вам может потребоваться проверить, что конфигурация server.root в "/etc/ngnx/sites-available/domain" соответствует вашим сайтам. Для конфигурации в "Homestead.yaml".

  • Если его совпадение не изменится, замените его и перезапустите веб-сервер с помощью "sudo service nginx restart"

  • И все еще не работает, тогда разрешите разрешение записи для папки "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

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

  • 0
    Спасибо Арда! Это ключ. Это заняло у меня несколько часов :( Вы должны зайти в виртуальную машину и запустить: composer create-project laravel / laravel имя-папки
  • 0
    Что важно понять с ошибкой «Не указан входной файл», так это посмотреть на вашем хосте конфигурацию 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 /», так что будут ваши синхронизированные файлы от бродяги до вашего хозяина
6

Для меня работало:

vagrant reload --provision

  • 1
    Это также помогло мне загрузить сайты после того, как я изменил каталог основного хоста на Code вместо webdesign. Спасибо! - прямо сейчас редактировать
  • 1
    Работал на меня. Благодарю.
Показать ещё 2 комментария
5

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

homestead destroy
homestead up
  • 0
    к сожалению, это работает и для меня, что приводит к тому, что мои базы данных уничтожаются каждый раз. Вы нашли какое-нибудь решение для этого?
  • 0
    Вы могли бы просто сделать вместо этого «домашнее хозяйство». Кроме того, если вы еще этого не сделали, я бы порекомендовал настроить средства записи и миграции, чтобы вы могли быть менее защищены от базы данных.
Показать ещё 1 комментарий
4

У меня были те же проблемы

Но забыл, что спецификации сказали, что файл конфигурации будет расположен в

~/.homestead/Homestead.yaml и обновлял ~/Усадьбы/SRC/Заглушки/Homestead.yaml

Итак, FIX должен был обновить 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

Надеюсь, это сработает для кого-то еще.

2

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

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

Файл Homestead.yaml будет помещен в ~/.homestead hidden Каталог:

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

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

  • 0
    да, это сработало для меня. Спасибо!
2

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

homestead destroy
homestead up
1

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

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

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

Просто создайте 'public' папку внутри exampleproject на вашем хост-компьютере.

1

После того, как я переименовал некоторые каталоги, мне пришлось уничтожить и повторно запустить vagrant. Ни одно из решений здесь не сработало.

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

vagrant destroy
vagrant up
1

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

TL; DR;

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

1

Это, вероятно, потому, что веб-сервер nginx не указывает на правильный путь.

Здесь два ключа, на которые вы должны смотреть: map в folders и to в разделе sites. Клавиша folders сопоставляет папки на вашем локальном компьютере с бродящей виртуальной машиной. Клавиша 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 

My 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, и все должно быть установлено.

1

Осторожно, linux чувствителен к регистру. Вероятно, поэтому вы видите каталог "Код" и "код".

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

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

  • 0
    Спасибо, @noeldiaz! Вчера я закончил делать то, что ты сказал. Я снова загрузил vagrant, затем удалил каталог Homestead с помощью «rm -r Homestead», затем выполнил vagrant, и когда я увидел, что процедура vagrant up запустила некоторые дополнительные вещи, такие как загрузка сервера nginx. Когда я попробовал сайт, он работал! Кроме того, проблема с папками «code» и «Code» исчезла :) Я сделал то, что вы предложили, что касается раздела «папки». Я / ма немного напуган, так как кажется, что я не понимаю, как отладить проблему с сервером / виртуальной коробкой », но продолжу! Я очень ценю вашу помощь :)
0

Это происходит потому, что вам нужно правильно настроить свой nginx-сервер, чтобы обслуживать приложение. Вы можете сделать это в соответствии с этим руководством, начиная с темы Настроить Nginx и веб-корень.

После правильной настройки вашей символической ссылки между вашим/etc/nginx/сайтами и /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 и 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 для второго проекта.

P.S. Я тестировал это для Laravel 5.2 в Windows

0

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

0

У меня были похожие проблемы с Homestead, и для меня работала коробка. Поэтому вы должны попробовать следующее:

vagrant provision

0

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

общая папка моего проекта была создана в /home/vagrant/Code/demo/public

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

Теперь он работает идеально.

0

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

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

  • homestead destroy
  • homestead up
0

Здесь мое решение:

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

Изображение 3555

0

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню