Я новичок в использовании 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
Я проверил, и я вижу изменения, внесенные в мой компьютер. Примеры файлов проекта отражаются в файлах брандмауэра.
Не уверен, как это понять! Я был бы очень признателен за любую помощь:)
Вместо повторной установки try
vagrant up --provision
или
homestead up --provision
У меня была такая же точная проблема, и я нашел решение с помощью ларачата.
Здесь, как исправить это, вам нужно правильно изменить настройки файла 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/
Это легко исправить, потому что вы изменили имя папки: 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
Перезагрузите веб-браузер, теперь он должен работать
the correct URI
)
Предоставление моего ответа на всякий случай, если кто-то борется с этой проблемой.
Вам может потребоваться проверить, что конфигурация server.root в "/etc/ngnx/sites-available/domain" соответствует вашим сайтам. Для конфигурации в "Homestead.yaml".
Если его совпадение не изменится, замените его и перезапустите веб-сервер с помощью "sudo service nginx restart"
И все еще не работает, тогда разрешите разрешение записи для папки "YOURSITE/app/storage" в качестве "chmod -R 777 app/storage"
У меня также была та же проблема, я предположил, что Laravel установлен "из коробки", но, похоже, это не так. я SSH'ed к машине и выполнил следующие команды:
cd Code
sudo composer self-update #not necessary, but I did it anyways
composer create-project laravel/laravel Laravel --prefer-dist
И все было как обычно.
Для меня работало:
vagrant reload --provision
Эта проблема возникла для меня после редактирования Homestead.yaml. Я решил эту проблему
homestead destroy
homestead up
У меня были те же проблемы
Но забыл, что спецификации сказали, что файл конфигурации будет расположен в
~/.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
Надеюсь, это сработает для кого-то еще.
У меня была такая же проблема, следуя документам Laravel (https://laravel.com/docs/5.2/homestead)
Моя проблема была очень простой, я пропустил эту часть в документах:
Файл Homestead.yaml будет помещен в ~/.homestead hidden Каталог:
Итак, я обновлял неправильный файл Homestead.yaml, так как файл был перемещен, когда я запустил команду bash init.sh.
Я понял это только после многих поисков, поэтому надеюсь, что это поможет кому-то.
Перезагрузите свою усадьбу. Работал для меня.
homestead destroy
homestead up
Я просто боролся с той же ситуацией. Следующее решило проблему:
Если у вас есть такая структура каталогов:
folders:
- map: /Users/me/code/exampleproject
to: /home/vagrant/code/exampleproject
Просто создайте 'public' папку внутри exampleproject на вашем хост-компьютере.
После того, как я переименовал некоторые каталоги, мне пришлось уничтожить и повторно запустить vagrant. Ни одно из решений здесь не сработало.
Это сработало для меня:
vagrant destroy
vagrant up
Предыдущие версии Homestead отображает папки в ~/Code
, например, по умолчанию ~/Code/laravel/public
. Обратите внимание на капитализацию дела в ~/Code
. Они чувствительны к регистру. В новых версиях используется нижний регистр ~/Code
. Обновите эти каталоги в своем Homestead.yaml
в соответствии с вашими фактическими каталогами.
TL; DR;
Обновить ~/Code
до ~/Code
или наоборот в зависимости от ваших фактических имен каталогов.
Это, вероятно, потому, что веб-сервер 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
, и все должно быть установлено.
Осторожно, linux чувствителен к регистру. Вероятно, поэтому вы видите каталог "Код" и "код".
Что бы я сделал, это повторить настройку бродяг снова, и если вы хотите сохранить ее простой и сопоставлять то, что ядро Homestead по умолчанию делает ваш каталог на вашей главной машине "Код" в верхнем регистре.
Вы также можете в разделе "Папки" просто перейти к своей папке "Код" на вашем компьютере, если вы решите позже добавить дополнительные сайты в свою установку Homestead. Таким образом, под/home/vagrant/Code/вы увидите все ваши проекты на сайте, и вы можете поместить больше сайтов, указывающих на их "общедоступные" каталоги.
Это происходит потому, что вам нужно правильно настроить свой 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
Теперь ваше приложение должно быть подано.
Я отредактировал 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
vagrant provision
связанные коды не сработали для меня, потеряв некоторое время, я перезапустил всю систему. Теперь он работает... -, - "
У меня были похожие проблемы с Homestead, и для меня работала коробка. Поэтому вы должны попробовать следующее:
vagrant provision
Моя проблема была в файле конфигурации домена:
общая папка моего проекта была создана в /home/vagrant/Code/demo/public
конфигурационный файл домена (для меня /etc/nginx/sites -available/demo.app) настроил: "/home/vagrant/Code/Laravel/public" вместо "/home/vagrant/Code/демо/общественность".
Теперь он работает идеально.
Это обычно происходит при редактировании файла Homestead.yaml.
Если, как и я, вы пробовали homestead up --provision
и не сработали!
затем попробуйте это (это работает для меня):
homestead destroy
homestead up
Здесь мое решение:
Это проблема с файловым пути, так ниже, это мои папки и пути к сайтам. Кроме того, мне пришлось использовать "бродячий уничтожить", поскольку подготовка не работала.
В Laravel 5 мне пришлось сдать ssh на мой фермерский сервер и выполнить следующие команды:
sudo chmod -R 777 storage
sudo chmod -R 777 bootstrap/cache