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

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

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

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

Ответ 1

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

vagrant up --provision

или

homestead up --provision

Ответ 2

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

Здесь, как исправить это, вам нужно правильно изменить настройки файла 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/

Ответ 3

Это легко исправить, потому что вы изменили имя папки: 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

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

Ответ 4

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

vagrant reload --provision

Ответ 5

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

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

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

  • И все еще не работает, тогда разрешите разрешение записи для папки "YOURSITE/app/storage" в качестве "chmod -R 777 app/storage"

Ответ 6

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

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

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

Ответ 7

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

homestead destroy
homestead up

Ответ 8

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

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

~/.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

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

Ответ 9

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

homestead destroy
homestead up

Ответ 10

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

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

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

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

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

Ответ 11

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

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

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

Ответ 12

Это, вероятно, потому, что веб-сервер 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, и все должно быть установлено.

Ответ 13

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

TL; DR;

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

Ответ 14

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

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

vagrant destroy
vagrant up

Ответ 15

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

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

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

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

Ответ 16

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

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

Ответ 17

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

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

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

Ответ 18

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

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

  • homestead destroy
  • homestead up

Ответ 19

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

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

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

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

Ответ 20

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

vagrant provision

Ответ 21

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

Ответ 22

Я отредактировал 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

Ответ 23

Это происходит потому, что вам нужно правильно настроить свой 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

Теперь ваше приложение должно быть подано.

Ответ 24

Я использую 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, я получил сообщение об ошибке "файл не указан"

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

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

Ответ 25

Та же проблема для меня.

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

vagrant reload --provision