我是使用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文件中。
不确定如何解决这个问题!我真的很感激任何可能的帮助:)
答案 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)
如果有人在努力解决这个问题,请给我回复。
您可能需要验证" / etc / ngnx / sites-available / domain"中的server.root配置。匹配您的sites.to配置" Homestead.yaml"。
如果不匹配,请更改它并使用" sudo service nginx restart"
然而事情仍然不起作用,然后允许#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 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
路径将被安装到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 provision
或homestead 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.yaml
和hosts
,并使用vagrant suspend
,vagrant 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\ProjectOne
和D:\Projects\ProjectTwo
然后我在浏览器中输入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)