web-dev-qa-db-ja.com

Laravel Homesteadを使用: '入力ファイルが指定されていません'

私はLaravelとHomesteadを使うのが初めてであり、正しい方向への助けやポイントをいただければ幸いです。 「php artisan serve」を実行すると「You are coming」画面に正常に到達できましたが、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」という2つのディレクトリがあります。

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

コンピューターのexampleprojectファイルに加えた変更がVagrant Boxファイルに反映されていることを確認しました。

どうやってこれを理解するかわからない!!私は可能な限りの助けを本当に感謝します:)

89
bryant

再試行する代わりに

vagrant up --provision

または

Homestead up --provision
129
sleimanx2

私はまったく同じ問題を抱えており、larachatを使用して解決策を見つけました。

これを修正する方法は、Homestead.yamlファイルの設定を正しくする必要があることです。 Homestead 2.0のJeffery 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/

44
Rudy Jessop

フォルダー名をexampleprojectに変更したため、これは簡単に修正できます。

放浪者へのSSH:

ssh [email protected] -p 2222

次に、nginxの設定を変更します。

Sudo vi /etc/nginx/sites-enabled/Homestead.app

編集正しいURIこれを3行目のルートに新しいフォルダー名で

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

Nginxを再起動します

Sudo service nginx reload

Webブラウザーをリロードします。今すぐ動作するはずです

26
Truc

私にとっては、以下が働いた:

vagrant reload --provision

15
Dave Chambers

誰かがこの問題に苦労している場合に備えて私の応答を与えます。

  1. 「/ etc/ngnx/sites-available/domain」のserver.root設定が、「Homestead.yaml」のsites.to設定と一致することを確認する必要がある場合があります。

  2. 一致しない場合は変更し、「Sudo service nginx restart」でウェブサーバーを再起動します

  3. それでも動作しない場合は、「YOURSITE/app/storage」フォルダーの書き込み権限を「chmod -R 777 app/storage」として許可します

8
Senthil

私も同じ問題を抱えていました。Laravelが「箱から出して」インストールされていると仮定していましたが、インストールされていないようです。マシンにSSHで接続し、次のコマンドを実行しました。

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

そして、すべてがいつものように実行されていました。

7
Arda

この問題は、Homestead.yamlを編集した後に発生しました。この問題を解決しました

Homestead destroy
Homestead up
5
Rayzor

同じ問題がありました

しかし、構成ファイルは次の場所にあると仕様書に記載されていることを忘れていました

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

これが他の誰にも役立つことを願っています。

4
lightup

Laravelドキュメント( https://laravel.com/docs/5.2/Homestead )をフォローしているときに同じ問題が発生しました

私の問題は非常に単純で、ドキュメントのこの部分を読み逃しました:

Homestead.yamlファイルは〜/ .Homestead隠しディレクトリに配置されます:

そのため、bash init.shコマンドを実行したときにファイルが移動されたため、間違ったHomestead.yamlファイルを更新していました。

これは多くの検索をして初めて実現したので、これが誰かの助けになることを願っています。

2
aljaydavids

Homesteadを再起動します。私のために働いた。

Homestead destroy
Homestead up
2

いくつかのディレクトリの名前を変更した後、Vagrantを破棄して再実行する必要がありました。ここでの解決策はどれもうまくいきませんでした。

これは私のために働いた:

vagrant destroy
vagrant up
1
yper

注意点として、Linuxでは大文字と小文字が区別されます。それがおそらく「コード」ディレクトリと「コード」ディレクトリが表示される理由です。

私がやりたいことは、浮浪者の設定をもう一度やり直し、それをシンプルに保ち、Homesteadボックスのデフォルトを一致させる場合は、ホストマシンのディレクトリを大文字で「コード」にします。

後でHomesteadセットアップにサイトを追加することにした場合に備えて、「folders」セクションでマシンの「Code」フォルダーにマップすることもできます。そうすれば、/ home/vagrant/Code /の下にすべてのサイトプロジェクトが表示され、「パブリック」ディレクトリを指すサイトを追加できます。

1
noeldiaz

古いバージョンのHomesteadは、~/Code内のフォルダーをマップして、たとえばデフォルトで~/Code/laravel/publicと言います。 ~/Codeの大文字と小文字に注意してください。これらは大文字と小文字が区別されます。新しいバージョンでは、小文字の~/codeが使用されます。実際のディレクトリに従って、Homestead.yamlのこれらのディレクトリを更新します。

TL; DR;

実際のディレクトリ名に応じて、~/Code~/codeに、またはその逆に更新します。

1
doncadavona

これは、nginx Webサーバーがnotが正しいパスを指しているためです。

確認する必要がある2つのキーがあります。mapの下のfoldersキーと、toの下のsitesキーです。 foldersキーは、ローカルマシン上のフォルダーをVagrant VMにマップします。 sitesキーは、toの値でnginxに仮想ホストを作成するために使用されます。

確認したいのは、toの下のsitespublicへの正しいパスを指していることです。

問題は、composer create laravel/laravelでlaravelプロジェクトを作成したことです。これにより、現在のディレクトリにlaravelという名前のフォルダーが作成されました。次に、ディレクトリを変更せずに、composer require laravel/Homestead --devでHomesteadヘルパーをインストールしました。

php vendor/bin/Homestead makeおよびvagrant 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パスがvagrant VMにマウントされます。これは間違ったディレクトリです。アプリケーションディレクトリがあるlaravelプロジェクトルートを指している必要があるためです。ここで起こったことは、私がプロジェクトのルートでの間にHomesteadヘルパーを要求することになっていたことです。

だから今質問は私が何をすべきかです?次の2つのオプションがあります。現在のHomestead VMを取り除き、最初からやり直しますが、今回はプロジェクトルートからまたは既に持っているものを回収します。

持っているものを救いたい場合は、いくつかのファイルとフォルダーをlaravelプロジェクトルートに移動する必要があります。

これらは、移動する必要があるアーティファクトです。

.vagrant
Homestead.yml
Vagrantfile

composer.jsonは後で必要になるため、必要ありません。

これらのファイルをlaravelプロジェクトルートに移動し、現在の作業ディレクトリをそこ(cd 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を実行して、現在のプロジェクトのcomposer.jsonファイルにHomesteadヘルパーが必要でインストールされるようにします。

vagrant reload --provisionを実行すると、すべて設定できます。

1
2upmedia

私は同じ状況に苦労していました。以下は問題を解決しました:

次のようなディレクトリ構造がある場合:

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

ホストマシンのexampleproject内に「public」フォルダを作成するだけです。

1

私のソリューションは次のとおりです。

これはファイルパスの問題であるため、以下にフォルダとサイトのパスを示します。また、プロビジョニングが機能しなかったため、「vagrant destroy」を使用する必要がありました。

enter image description here

0
Matt Pierce

私は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

IPINGHomestead.localドメインを検索し、結果を得ていました。

しかし、ブラウザで http://Homestead.local と入力すると、 'no input file specified'エラーが発生しました

コード/パブリックフォルダをチェックしましたが、インデックスファイルはありませんでした。システムがデフォルトのファイルを探していたと確信していましたが、それはなんとなく欠落しています。

インデックスファイルを作成すると、正常に動作し始めました。

0
Nava Bogatee

通常、これはHomestead.yamlファイルを編集するときに発生します。

私のようにHomestead up --provisionを試してみたが、うまくいかなかった!それからこれを試してください(私にとってはうまくいきます):

  • Homestead destroy
  • Homestead up
0
Mahmoud Zalt

ホームステッドでも同様の問題があり、ボックスのプロビジョニングだけでうまくいきました。したがって、これを試してください:

vagrant provision

0
masummdar

このlaracastチュートリアル に従ってHomestead.yamlhostsを編集し、vagrant suspendvagrant haltなどを使用してHomesteadを再起動しました。/ vagrant up;私もvagrant provisionを試みましたが、no file specifiedは、コンピューターを再起動した後にのみ消えました(Windows 7を使用していますPC)上記のすべてを行った後。それは確かに時間のかかるトリッキーなエラーです。

これは私の作業Homestead.yamltwolaravelのように見えるものです_プロジェクト:

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の2つの個別のインストールがあります。

次に、ブラウザーでprojectone.app:8000と入力し、2番目のプロジェクトにprojecttwo.app:8000と入力して、最初のプロジェクトにアクセスします。

追伸WindowsでLaravel 5.2に対してこれをテストしました

0
Arthur Tarasov

vagrant provision関連コードは私にとってはうまくいきませんでした。しばらく時間が経った後、システム全体を再起動しました。これで動作します...-、-"

0
giovannipds

これは、アプリケーションを提供するためにnginxサーバーを適切に構成する必要があるために発生します。 NginxとWebルートの構成 トピックから始めて、このガイドに従ってこれを行うことができます。

/ etc/nginx/sites-availableと/ etc/nginx/sites-enabledの間で適切に シンボリックリンクを設定 した後、ルート変数がアプリケーションのフォルダーパスに設定されていることを確認する必要があります。からnginxルートを設定します

root /usr/share/nginx/html;

/home/vagrant/Projects/ProjectOne/public

また、htmlの前にphpが提供されるように、htmlファイルの前にindex.phpを配置する必要があります。これを変える

index index.html index.htm;

これに

index index.php index.html index.htm;

設定が完了したら、nginxサーバーを再起動します

Sudo service nginx restart

これで、アプリケーションが提供されます。

0
Carlos Adames

Laravel 5では、ホームステッドサーバーにsshして、これらのコマンドを実行する必要がありました。

Sudo chmod -R 777 storage
Sudo chmod -R 777 bootstrap/cache
0
EvWill

私にとっても同じ問題です。

vagrant provisionHomestead up --provisionはどちらも機能しませんでしたが、以下は機能しました-ymlファイルを変更したときにホームステッドがすでに実行されていたため

vagrant reload --provision

0
nzbenny

私の問題はドメインの設定ファイルにありました:

私のプロジェクトのパブリックフォルダーは/ home/vagrant/Code/demo/publicに作成されました

ドメインの構成ファイル(私にとっては/etc/nginx/sites-available/demo.app)が構成されていた:「/ home/vagrant/Code/demo/public」ではなく「/ home/vagrant/Code/Laravel/public」 「。

今では完璧に機能しています。

0
Angel Noriega