使用Laravel Homestead:'没有指定输入文件'

时间:2014-06-17 22:33:21

标签: laravel laravel-4 vagrant

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

我已经检查过,我可以看到对我的计算机exampleproject文件所做的更改会反映在vagrant box文件中。

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

29 个答案:

答案 0 :(得分:118)

而不是重新安装试试

vagrant up --provision

homestead up --provision

答案 1 :(得分:44)

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

以下是如何解决此问题,您需要正确使用homestead.yaml文件设置。如果你想知道它是如何完成的,请遵循关于homestead 2.0的{Jeffus Way教程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 :(得分:25)

这很容易解决,因为您已将文件夹名称更改为: exampleproject

SSH给你的流浪者:

ssh vagrant@127.0.0.1 -p 2222

然后更改你的nginx配置:

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

使用新文件夹名称编辑正确的URI 到第3行的根目录

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

重新启动Nginx

sudo service nginx reload

重新加载网络浏览器,现在应该可以使用

答案 3 :(得分:11)

对我来说,以下工作:

vagrant reload --provision

答案 4 :(得分:8)

如果有人在努力解决这个问题,请给我回复。

  1. 您可能需要验证" / etc / ngnx / sites-available / domain"中的server.root配置。匹配您的sites.to配置" Homestead.yaml"。

  2. 如果不匹配,请更改它并使用" sudo service nginx restart"

  3. 重启网络服务器
  4. 然而事情仍然不起作用,然后允许#34; YOURSITE / app / storage"文件夹为" chmod -R 777 app / storage"

答案 5 :(得分:7)

我也有同样的问题,我曾认为Laravel是“开箱即用”安装的,但似乎不是。我通过SSH连接到机器并运行这些命令:

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

一切都像往常一样运行。

答案 6 :(得分:5)

编辑Homestead.yaml后,我遇到此问题。我通过

解决了这个问题
homestead destroy
homestead up

答案 7 :(得分: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

希望这适用于其他任何人。

答案 8 :(得分:2)

我在遵循Laravel文档(https://laravel.com/docs/5.2/homestead

时遇到了同样的问题

我的问题非常简单,我错过了在文档中阅读此部分:

  

Homestead.yaml文件将被放置在〜/ .homestead中   目录:

所以我更新了错误的Homestead.yaml文件,因为在运行bash init.sh命令时文件被移动了。

我经过大量的搜索后才意识到这一点,所以希望这会有所帮助。

答案 9 :(得分:2)

重新开始你的家园。为我工作。

homestead destroy
homestead up

答案 10 :(得分:1)

请注意,linux是区分大小写的。这可能是你看到" Code"和#34;代码" 。目录

我要做的是再次重做流浪汉设置,如果你想保持简单并且匹配Homestead盒子的默认设置,你的目录就在主机上了#34; Code"用大写字母。

你也可以在"文件夹"部分只是映射到您的"代码"机器中的文件夹,以防您决定稍后向Homestead设置添加更多站点。那样在/ home / vagrant / Code /你会看到你所有的网站项目,你可以屁股指向他们的" public"目录。

答案 11 :(得分:1)

这很可能是因为nginx网络服务器指向正确的路径。

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

您希望确保to下的sites指向public的正确路径。

问题是我用composer create laravel/laravel创建了我的laravel项目。这在我当前名为laravel的目录中创建了一个文件夹。然后在不更改目录的情况下,我使用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 

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路径将被安装到vagrant VM上。这是错误的目录,因为它应该指向您的app目录所在的laravel项目根目录。这里发生的事情是,当我在项目根目录时,我应该要求宅基地助手。

所以现在问题是我该怎么办?您有两个选择:摆脱现有的宅基地VM并重新开始,但这次是从项目根 OR 打捞您已经拥有的。

如果你想挽救你拥有的东西,你必须将几个文件和一个文件夹移动到你的laravel项目根目录。

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

.vagrant
Homestead.yml
Vagrantfile

由于您以后需要composer.json,因此不需要cd laravel

将这些文件移动到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

现在运行vagrant reload --provision,以便在您当前项目的composer.json文件中安装hometead帮助程序并进行安装。

运行{{1}},你应该全部设定。

答案 12 :(得分:1)

我只是在同样的情况下挣扎。以下解决了这个问题:

如果你有这样的目录结构:

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

只需在主机上的exampleproject中创建'public'文件夹即可。

答案 13 :(得分:1)

较早版本的Homestead在let results = query.flatMapLatest { query in return search(query) .observeOn(MainScheduler.instance) } 中映射文件夹,例如默认~/Code。请注意~/Code/laravel/public中的案例大写。这些是区分大小写的。新版本使用小写~/Code。根据您的实际目录更新~/code中的这些目录。

<强> TL; DR;

根据您的实际目录名称,将Homestead.yaml更新为~/Code,反之亦然。

答案 14 :(得分:1)

在我重命名一些目录之后,我不得不摧毁并重新运行流浪汉。这里没有解决方案。

这对我有用:

vagrant destroy
vagrant up

答案 15 :(得分:0)

仅当我执行新安装而没有正确创建目录(例如,“正确”:C:\Users\userxyz\Code\public)时,才会发生此错误。

尝试删除“公共”目录,显示错误“未指定输入文件”

Homestead.yaml

folders:
    - map: ~/Code
      to: /home/vagrant/Code
      #type: "nfs"

sites:
    - map: homestead.test
      to: /home/vagrant/Code/public

答案 16 :(得分:0)

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

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

答案 17 :(得分:0)

如果您使用的是新版本的幼虫7> =,则可以从本地目录<div class="section"> <nav class="navigation__container"> <ul class="menu"> <li class="menu__item"><a class="menu__item--anchor" href="#">link 1</a></li> <li class="menu__item"><a class="menu__item--anchor" href="#">link 1</a></li> <li class="menu__item"><a class="menu__item--anchor" href="#">link 1</a></li> <li class="menu__item"><a class="menu__item--anchor" href="#">link 1</a></li> <li class="menu__item"><a class="menu__item--anchor" href="#">link 1</a></li> </ul> </nav> </div>中使用

答案 18 :(得分:0)

尝试重新启动计算机

在本地运行了一个可运行的Homestead,该Homestead在某些时候停止了,并会出现“未指定输入文件”错误。我找不到它。

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

答案 19 :(得分:0)

我有这样的问题。我检查了Homestead.yaml文件,所有文件和所有设置均正确。经过以下步骤,我的问题消除了。

1-如果您在 vagrant @ homestead:〜$ 命令行,输入exit命令。

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

vagrant reload --provision

3次运行vagrant ssh

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

答案 20 :(得分:0)

对我来说同样的问题。

vagrant provisionhomestead up --provision都不适合我,但是下面的方法却可以-可能是因为当我修改yml文件时,宅基已经在运行了

vagrant reload --provision

答案 21 :(得分:0)

我正在使用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时,出现'未指定输入文件'错误

我检查了代码/公用文件夹,没有索引文件。我确定系统正在寻找默认文件,但缺少该文件。

一旦创建了索引文件,它就会开始正常工作。

答案 22 :(得分:0)

这是因为您需要正确配置nginx服务器才能为您的应用程序提供服务。您可以按照本指南执行此操作,从主题Configure Nginx and the Web Root开始。

在/ etc / nginx / sites-available和/ etc / nginx / sites-enabled之间正确configuring your symbolic link后,您需要确保将根变量设置为应用程序的文件夹路径。从

设置你的nginx根目录
root /usr/share/nginx/html;

/home/vagrant/Projects/ProjectOne/public

另外,你必须在你的html文件之前放置index.php,以便在html之前提供php。改变这个

index index.html index.htm;

到这个

index index.php index.html index.htm;

完成配置后,使用

重新启动nginx服务器
sudo service nginx restart

您的申请应该立即送达。

答案 23 :(得分:0)

我根据this laracast tutorial修改了homestead.yamlhosts,并使用vagrant suspendvagrant halt等/ vagrant up重新启动了宅基地;我也尝试了vagrant provision,但在完成上述所有操作后,重新启动计算机(我在Windows 7 PC上)之后no file specified才消失。这当然是一个耗时且棘手的错误。

这就是 两个 laravel项目的工作homestead.yaml

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

请注意,D:\Projects\ProjectOneD:\Projects\ProjectTwo

中有两个单独的laravel安装

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

P.S。我在Windows上为Laravel 5.2测试了这个

答案 24 :(得分:0)

vagrant provision相关代码对我不起作用,丢失了一段时间后,我重启了整个系统。现在它有效...... - , - “

答案 25 :(得分:0)

我和Homestead有类似的问题,只是为我配置了盒子。所以你应该试试这个:

vagrant provision

答案 26 :(得分:0)

我的问题出在域的配置文件中:

我的项目的公共文件夹是在/ home / vagrant / Code / demo / public

中创建的

域的配置文件(对我来说/etc/nginx/sites-available/demo.app)已配置:&#34; / home / vagrant / Code / Laravel / public&#34;而不是&#34; / home / vagrant / Code / demo / public&#34;。

现在它完美无缺。

答案 27 :(得分:0)

这通常在您编辑 Homestead.yaml 文件时发生。

如果像我一样,你试过homestead up --provision并且没有效果! 然后尝试这个(它适用于我):

  • homestead destroy
  • homestead up

答案 28 :(得分:0)

这是我的解决方案:

这是一个文件路径问题,所以下面是我的文件夹&amp;网站路径。此外,我不得不使用&#34; vagrant destroy&#34;因为配置没有成功。

enter image description here