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

我是使用Laravel和Homestead的新手,并且希望得到任何帮助或者正确的方向。 当我运行“php artisan serve”时,我已经成功地到达了“你已经到达”屏幕,但是当我尝试通过Vagrant做同样的事情时,我得到了“没有指定input文件”。 我的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文件所做的更改反映在stream浪盒子文件。

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

而不是重新安装尝试

 vagrant up --provision 

要么

 homestead up --provision 

我有同样的确切问题,并通过larachat的使用find了解决scheme。

以下是如何解决它,你需要有你的homestead.yaml文件设置正确。 如果你想知道如何完成按照家园2.0的Jeffery Way教程https://laracasts.com/lessons/say-hello-to-laravel-homestead-two

现在要解决Input not specified问题,你需要ssh到宅基地框和types

serve domain.app /home/vagrant/Code/path/to/public/directory这将为nginx生成一个脚本。 每次切换项目时都需要这样做。

他还讨论了我在本系列中解释的内容https://laracasts.com/series/laravel-5-fundamentals/

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

所以SSH对你的stream浪者:

 ssh vagrant@127.0.0.1 -p 2222 

然后改变你的nginxconfiguration:

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

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

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

重新启动Nginx

 sudo service nginx reload 

重新加载networking浏览器,它现在应该工作

给我的回应,以防万一有人在这个问题上挣扎。

  1. 您可能需要validation“/ etc / ngnx / sites-available / domain”中与您的sites.toconfiguration在“Homestead.yaml”中的server.rootconfiguration。

  2. 如果它不匹配,然后更改它,并重新启动“sudo服务nginx重新启动”的networking服务器

  3. 仍然不能正常工作,则允许“YOURSITE / app / storage”文件夹的写入权限为“chmod -R 777 app / storage”

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

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

一切都像往常一样运行。

在编辑Homestead.yaml后,我发生了这个问题。 我通过解决这个问题

 homestead destroy homestead up 

遵循Laravel文档( https://laravel.com/docs/5.2/homestead )时遇到同样的问题

我的问题很简单,我错过了阅读文档中的这一部分:

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

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

我经过大量的search后才意识到这一点,所以希望这会帮助别人。

我有同样的问题

但忘了规格说configuration文件将位于

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

希望这适用于其他人。

谨慎的话,linux是区分大小写的。 这可能是你看到“Code”和“code”目录的原因。

我要做的就是再次重做vagrant安装程序,如果你想保持简单并且与Homestead盒子的默认configuration相匹配,那么你的主机上的目录就是大写的“Code”。

你也可以在“文件夹”部分find你机器上的“代码”文件夹,以防你决定在以后添加更多的网站到你的家园。 这样的方式/ home / vagrant / Code /你会看到所有的网站项目,你可以嘲笑更多的网站指向他们的“公共”目录。

重新启动你的家园。 为我工作。

 homestead destroy homestead up 

这可能是因为nginx web服务器没有指向正确的path。

有两个键你应该看看: folders下的map键和sites下的键。 folders键将本地计算机上的folders映射到stream浪VM。 sites键用来在nginx上创build一个具有to的值的虚拟主机。

你想要确保的是,在sites指向正确的路向public

问题是我用composer create laravel/laravel创build了我的laravel项目。 这在我的当前目录中创build了一个名为laravel的文件夹。 然后,在没有改变目录的情况下,我安装了composer require laravel/homestead --dev的家园助手, 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/laravel51path将被安装到vagrant虚拟机上。 这是错误的目录,因为它应该指向您的应用程序目录所在的laravel项目根目录。 这里发生的事情是,当我在项目根源的时候,我应该要求宅基地帮手。

所以现在的问题是我该怎么做? 你有两个select:摆脱你目前的宅基地虚拟机,并重新开始,但这次从项目根目录拯救你已经。

如果你想打捞你所拥有的,你必须将几个文件和一个文件夹移动到你的laravel项目的根目录下。

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

 .vagrant Homestead.yml Vagrantfile 

composer.json将不会被需要,因为您稍后会要求它。

将这些文件移动到您的laravel项目根目录并将您当前的工作目录更改为( cd laravel )。 此时只需更新folders下的map ,并确保它指向项目根目录。 还要确保在sites下的密钥是/public后面的folders下的to键。

例如:

 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文件中并安装。

运行vagrant reload --provision ,你应该全部设置。

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

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

这是我的解决scheme:

这是一个文件path问题,所以下面是我的文件夹和网站path。 另外,由于拨款不起作用,我不得不使用“stream浪摧毁”。

在这里输入图像说明

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

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

  • homestead destroy
  • homestead up

我的问题是在域的configuration文件中:

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

(/etc/nginx/sites-available/demo.app)的configuration文件configuration了“/ home / vagrant / Code / Laravel / public”而不是“/ home / vagrant / Code / demo / public ”。

现在它正在完善。

我和Homestead有类似的问题,只是为我工作。 所以你应该试试这个:

vagrant provision

vagrant provision相关的代码没有为我工作,失去了一些时间后,我已经重新启动整个系统。 现在可以… – , – “

我根据这个laracast教程编辑homestead.yamlhosts ,并使用vagrant suspendvagrant halt等等/ vagrant up来重新启动宅基地; 我也尝试了一些vagrant provision ,但是在完成以上所有操作之后,我重新启动计算机 (在Windows 7 PC上)后, no file specified 。 这当然是一个耗时和棘手的错误。

这就是我的工作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 

请注意,在D:\Projects\ProjectOneD:\Projects\ProjectTwo有两个单独的laravel安装

然后通过在浏览器中inputprojectone.app:8000来访问第一个项目,然后在第二个项目中inputprojecttwo.app:8000

PS我在Windows上testing了这个Laravel 5.2

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

在你的/ etc / nginx / sites-available和/ etc / nginx / sites-enabled之间正确地configuration你的符号链接后 ,你需要确保你的根variables被设置为你的应用程序的文件夹path。 设置你的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; 

完成configuration后,重新启动nginx服务器

 sudo service nginx restart 

你的申请应该现在送达。

对我来说,以下工作:

vagrant reload --provision

旧版本的Homestead将文件夹映射到~/Code中,例如默认情况下~/Code/laravel/public 。 注意~/Code的案例大写。 这些区分大小写。 新版本使用小写~/code 。 根据您的实际目录更新您的Homestead.yaml这些目录。

TL; DR;

更新~/Code ~/code ,反之亦然取决于你的实际目录名称。