使用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

由于某种原因,在我的“无家可归者”盒子上有两个名为“ code”和“ Code”的目录:

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

我已经检查了,可以看到对计算机exampleproject文件所做的更改反映在无所事事的文件框中。

不太确定如何解决!!我真的很感激任何可能的帮助:)

Answers:


162

而不是重新安装尝试

vagrant up --provision

要么

homestead up --provision

1
vagrant up --provision我没有工作,但homestead up --provision没有
zillaofthegods

非常感谢!
yohannan_sobin '16

1
做吧vagrant reload --proivision
奥马尔·塔里克

1
这种方法也有效,您可以尝试无所事事地破坏和无所事事,然后我进行所有配置,并且它更加干净。
乔治·普拉梅诺夫

嗨,我这里有同样的问题,而不是宅基地,我在cpanel中运行它有什么建议吗?
伊斯兰教

45

我遇到了同样的问题,并通过使用larachat找到了解决方案。

这是解决该问题的方法,您需要正确设置homestead.yaml文件设置。如果您想知道它是如何完成的,请遵循Homestead 2.0上的Jeffery Way教程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

感谢您分享本教程。现在工作了!
丹·阿罗讷

全新安装了vagrant,virtualbox,homestead ...并尝试销毁/升级后,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,2016年

这锁定了我的计算机。如果给出了这些命令的原因,那就很好-确切地说明了为什么需要它们以及它们在做什么。
约书亚·福克斯沃思

24

对我来说,以下工作:

vagrant reload --provision


1
在将基本主机目录更改为Code而不是webdesign之后,这对我也起作用,使其可以加载网站。谢谢!– rhand刚刚编辑
rhand 18'1

Homestead.yaml文件中也可能是小写或大写问题。例如,我将其映射为/phpmyadmin我的目录名称实际上为phpMyAdmin
Pathros

1
我使用此解决方案的原因是它使我的数据库数据保持完整。此解决方案的详细信息在此处:laracasts.com/discuss/channels/general-discussion/…–
lwitzel

8

万一有人在这个问题上挣扎,请给我答复。

  1. 您可能需要验证“ / etc / ngnx / sites-available / domain”中的server.root配置是否与sites.to匹配,才能在“ Homestead.yaml”中进行配置。

  2. 如果不匹配,则将其更改并使用“ sudo service nginx restart”重新启动Web服务器。

  3. 而且仍然无法正常工作,然后将“ YOURSITE / app / storage”文件夹的写许可权授予“ chmod -R 777 app / storage”


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的配置->此文件包含您的站点映射(映射:homestead.test到:/ home / vagrant / code / public),这意味着如果您进入虚拟机以root-> / home / vagrant / code / public /,则必须在其中具有html php文件。如果不存在,请运行:composer create-project laravel / laravel :)如果一切正常,则您必须知道“〜/”表示“ c:/ windows / users / yourname /”,因此将存在您已同步的文件从无业游民到您的房东
gtamborero 18'Jan

5

在编辑Homestead.yaml之后,这个问题对我来说发生了。我通过以下方式解决了这个问题

homestead destroy
homestead up

不幸的是,这也对我有用,每次我的数据库都会崩溃。您找到任何解决方案吗?
LoveAndHappiness 2015年

您也许可以只做“宅基地供应”。另外,如果您还没有的话,我建议您设置种子服务器和迁移工具,以减少对数据库的保护。
雷佐2015年


5

我有同样的问题

但是忘记了规范说配置文件将位于

〜/ .homestead / Homestead.yaml并正在更新〜/ Homestead / src / stubs / 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

希望这对其他人有用。


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

只需在主机上的exampleproject中创建“ public”文件夹。


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!昨天,我结束了你所说的话。我再次下载了vagrant,然后使用“ rm -r Homestead”删除了Homestead目录,然后进行了vagrant升级,当我看到时,我发现vagrant升级过程还运行了其他一些东西,例如启动nginx服务器。当我尝试该网站时,它起作用了!另外,“代码”“代码”文件夹的问题也消失了:)就“文件夹”部分而言,我也完成了您的建议。我/我有点害怕,因为似乎我不知道如何调试服务器/虚拟机问题,但是我会继续!非常感谢您的帮助:)
Bryant

1

这可能是因为Nginx Web服务器指向正确的路径。

您应该查看两个键:map下方foldersto键和下方的键sites。该folders密钥将本地计算机上的文件夹映射到无业游民的VM。该sites密钥用于在nginx上创建虚拟主机,其值在中to

你想知道什么是tosites点正道public

问题是我用创建了laravel项目composer create laravel/laravel。这在当前目录中创建了一个名为的文件夹laravel。然后不更改目录,我使用安装了homestead helper composer require laravel/homestead --dev

运行后php vendor/bin/homestead makevagrant 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项目根目录。发生的事情是,我应该在项目根目录时需要家园助手。

所以现在的问题是我该怎么办?您有两种选择:摆脱当前的Homestead VM并重新开始,但是这次从项目根目录开始抢救您已经拥有的虚拟机。

如果要挽救已有的内容,则必须将几个文件和一个文件夹移动到laravel项目的根目录。

这些是您需要移动的工件:

.vagrant
Homestead.yml
Vagrantfile

composer.json将不再需要,因为你会在以后需要它。

将这些文件移动到您的laravel项目根目录,然后将当前的工作目录更改为该目录(cd laravel)。到那时,只需更新map下面的文件folders并确保它指向项目根目录即可。另外,还要确保该to键下sitesto下键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文件中需要并安装homestead helper。

运行vagrant reload --provision,您应该已经准备就绪。


1

当您编辑Homestead.yaml文件时,通常会发生这种情况。

如果像我一样,您尝试过homestead up --provision但没有成功!然后试试这个(对我有用):

  • homestead destroy
  • homestead up

1

~/Code例如,默认情况下,较早版本的Homestead会映射文件夹~/Code/laravel/public。请注意中的大小写~/Code。这些是区分大小写的。新版本使用小写字母~/codeHomestead.yaml根据您的实际目录更新这些目录。

TL; DR;

更新~/Code~/code或者根据您的实际目录名称反之亦然。


1

对我来说也是一样。

无论是vagrant provisionhomestead up --provision为我工作,但下面的一样-可能是因为当我修改YML文件宅基地已经运行

vagrant reload --provision


0

在Laravel 5中,我不得不ssh进入我的宅基服务器并运行以下命令:

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.yamlhosts根据本laracast教程和重新启动家园使用vagrant suspendvagrant halt等/ vagrant up; 我也尝试过vagrant provision,但是在完成上述所有操作no file specified重新启动计算机(在Windows 7 PC上)后才消失。这肯定是一个耗时且棘手的错误。

这是我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\ProjectOneD:\Projects\ProjectTwo

然后,通过projectone.app:8000在浏览器中键入projecttwo.app:8000第二个项目来访问第一个项目。

PS我在Windows上针对Laravel 5.2进行了测试


0

发生这种情况是因为您需要正确配置nginx服务器才能为您的应用程序提供服务。您可以按照本指南进行操作,从主题Nginx和Web根目录开始

在/ 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:〜$命令行中,请键入exitcommand。

2-现在您必须在Homestead文件夹中。运行此命令

vagrant reload --provision

3运行 vagrant ssh

现在,如果您在浏览器中键入相关地址,它将显示Laravel页面。


0

尝试重新启动计算机

本地运行的Homestead运行正常,在某个时候停止运行,将收到“未指定输入文件”错误。我找不到它。

重新启动计算机后,错误消失了。


0

如果您重命名包含Homestead项目的文件夹,则会收到此错误。访问您的Homestead.yaml文件并更新所有引用以指向重命名的文件夹,然后vagrant up再次执行(等)操作


0

如果您使用的是新版本的幼虫7> =,则可以从本地目录中使用 vagrant provision

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.