使用Laravel Homestead:&x27;未指定输入文件';

使用Laravel Homestead:&x27;未指定输入文件';,laravel,laravel-4,vagrant,Laravel,Laravel 4,Vagrant,我是一个新的使用拉威尔,和家园,并将感谢任何帮助或在正确的方向上的一点。当我运行“php artisan serve”时,我成功地进入了“You have Arrival”屏幕,但当我试图通过Vagrant执行相同的操作时,我得到了“未指定输入文件”。我的homestad.yaml文件如下所示: authorize: /Users/me/.ssh/id_rsa.pub keys: - /Users/me/.ssh/id_rsa folders: - map: /Users/m

我是一个新的使用拉威尔,和家园,并将感谢任何帮助或在正确的方向上的一点。当我运行“php artisan serve”时,我成功地进入了“You have Arrival”屏幕,但当我试图通过Vagrant执行相同的操作时,我得到了“未指定输入文件”。我的homestad.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
$ cd laravel51
$ ls -a
.
..
.vagrant
laravel
composer.json
composer.lock
vendor
Homestead.yml
Vagrantfile 
folders:
    - map: "/Users/USER/Sites/sandbox/php/laravel51"
      to: "/home/vagrant/laravel51"

sites:
    - map: laravel51
      to: "/home/vagrant/laravel51/public"
folders:
    - map: /Users/me/code/exampleproject
      to: /home/vagrant/code/exampleproject
在我的计算机上,我有以下目录:

/Users/me/code/Homestead
/Users/me/code/exampleproject //this is the directory created with composer
出于某种原因,在我的流浪者信箱上有两个名为“code”和“code”的目录:

我已经检查过了,我可以看到对我的计算机所做的更改示例项目文件反映在vagrant box文件中


我真的不知道该怎么解决这个问题!!我非常感谢您的帮助:)

请注意,linux是区分大小写的。这可能就是为什么您会看到一个“Code”和一个“Code”目录

我要做的是再次重做vagrant设置,如果你想保持它的简单性并匹配Homestead框的默认设置,请将主机中的目录“Code”改为大写


您也可以在“文件夹”部分映射到您机器中的“代码”文件夹,以防您以后决定将更多站点添加到您的宅地设置中。这样,在/home/vagrant/Code/下,您将看到所有的站点项目,您可以访问更多指向其“公共”目录的站点。

而不是重新安装

vagrant up --provision


如果有人在这个问题上挣扎,我会给出我的回应

  • 您可能需要验证“/etc/ngnx/sites available/domain”中的server.root配置是否与“homestad.yaml”中的sites.to配置匹配

  • 如果不匹配,则更改它并使用“sudo service nginx restart”重新启动Web服务器

  • 但仍无法正常工作,请允许将“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
    
    sudo chmod -R 777 storage
    sudo chmod -R 777 bootstrap/cache
    

    一切正常运行。

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

    对你的流浪汉说:

    ssh vagrant@127.0.0.1 -p 2222
    
    然后更改nginx配置:

    sudo vi/etc/nginx/sites enabled/homestad.app

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

    root "/Users/MYUSERNAME/Code/exampleproject/public";
    
    重新启动Nginx

    sudo service nginx reload
    

    重新加载web浏览器,它现在应该可以工作了

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

    以下是修复方法,您需要正确设置homestead.yaml文件。如果你想知道它是如何完成的,请遵循Jeffery Way homestead 2.0教程

    现在要解决输入未指定的问题,您需要ssh到homestead框中并键入

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


    他还讨论了我在本系列中解释的内容

    这一问题是在编辑Homestead.yaml之后发生的。我通过协商解决了这个问题

    homestead destroy
    homestead up
    

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

    homestead destroy
    homestead up
    

    这可能是因为nginx web服务器未指向正确的路径

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

    您要确保的是
    sites
    下的
    to
    指向
    public
    的正确路径

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

    运行
    php vendor/bin/homestead make
    vagrant up
    后,我的目录结构如下所示:

    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
    
    $ cd laravel51
    $ ls -a
    .
    ..
    .vagrant
    laravel
    composer.json
    composer.lock
    vendor
    Homestead.yml
    Vagrantfile 
    
    folders:
        - map: "/Users/USER/Sites/sandbox/php/laravel51"
          to: "/home/vagrant/laravel51"
    
    sites:
        - map: laravel51
          to: "/home/vagrant/laravel51/public"
    
    folders:
        - map: /Users/me/code/exampleproject
          to: /home/vagrant/code/exampleproject
    
    我的家园yml看起来像这样:

    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
    
    $ cd laravel51
    $ ls -a
    .
    ..
    .vagrant
    laravel
    composer.json
    composer.lock
    vendor
    Homestead.yml
    Vagrantfile 
    
    folders:
        - map: "/Users/USER/Sites/sandbox/php/laravel51"
          to: "/home/vagrant/laravel51"
    
    sites:
        - map: laravel51
          to: "/home/vagrant/laravel51/public"
    
    folders:
        - map: /Users/me/code/exampleproject
          to: /home/vagrant/code/exampleproject
    
    如果仔细观察,会将
    /Users/USER/Sites/sandbox/php/laravel51
    路径装载到vagrant VM上。这是错误的目录,因为它应该指向应用程序目录所在的laravel项目根目录。这里发生的事情是,当我在项目根中时,我应该需要宅地帮手

    现在的问题是我该怎么做?您有两个选择:摆脱当前的homestead VM并重新开始,但这次是从项目根挽救您已经拥有的

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

    以下是您需要移动的工件:

    .vagrant
    Homestead.yml
    Vagrantfile
    
    不需要
    composer.json
    ,因为您以后需要它

    将这些文件移动到laravel项目根目录,并将当前工作目录更改为该目录(
    cd laravel
    )。此时,只需更新
    文件夹下的
    映射
    ,并确保它指向项目根。还要确保
    站点
    下的
    to
    键是
    文件夹
    下的
    to
    键,并附加了
    /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文件并安装


    运行Wagrant reload--provision
    ,您应该已经准备好了。

    在Laravel 5中,我必须通过ssh连接到我的homestead服务器并运行以下命令:

    cd Code
    sudo composer self-update #not necessary, but I did it anyways
    composer create-project laravel/laravel Laravel --prefer-dist
    
    sudo chmod -R 777 storage
    sudo chmod -R 777 bootstrap/cache
    
    这是我的解决方案
    ---
    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
    
    vagrant reload --provision
    
    folders:
        - map: ~/Code
          to: /home/vagrant/Code
          #type: "nfs"
    
    sites:
        - map: homestead.test
          to: /home/vagrant/Code/public