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


113

私は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」という名前の2つのディレクトリがあります。

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

私が確認したところ、コンピュータのexampleprojectファイルに加えられた変更がvagrant boxファイルに反映されていることがわかります。

これを理解する方法が本当にわからない!! 私は可能な限りの助けを本当に感謝します:)

回答:


163

再インストールする代わりに

vagrant up --provision

または

homestead up --provision

1
vagrant up --provision私にとってはhomestead up --provisionうまく
いき

どうもありがとうございます!
yohannan_sobin 16

1
ただしてくださいvagrant reload --proivision
Omar Tariq 2017年

1
この方法は機能していますが、vagrant destroyとvagrant upを試してから、すべての構成を作成すると、よりクリーンになります。
George Plamenov Georgiev

こんにちは私はここで同じ問題を抱えていますが、ホームステッドではなくcpanelで実行しますか?
Aslam、

45

私はまったく同じ問題を抱えており、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/


2
これはまさに私が探していたものです。ありがとうルディ!
マシューフリッツ

ホームステッドに別のプロジェクトを追加すると問題が発生すると思いますか?serveすべてに対して自動的に実行することは不可能ですか?
Volatil3 2015年

チュートリアルを共有していただきありがとうございます。うまくいきました!
Dan Aronne、2015

vagrant、virtualbox、homestead ...を新規にインストールし、destroy / upを試行すると、serveコマンドが最終的に機能します。ありがとう
クリス

28

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

したがって、あなたの浮浪者にSSHで接続してください:

ssh vagrant@127.0.0.1 -p 2222

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

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

新しいフォルダー名を使用して、 3行目のルートの正しいURIを次のように編集します

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

Nginxを再起動します

sudo service nginx reload

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


この問題については、すべてのWebでベストアンサーです。賞賛!
Defkon1 2016

これは私のコンピューターをロックしました。これらのコマンドの理由が与えられればいいのですが-正確にそれらが必要とされる理由と彼らが何をしているか。
ジョシュアフォックスワース2016

24

私にとっては、以下がうまくいきました:

vagrant reload --provision


1
これは、ベースホストディレクトリをウェブデザインではなくコードに変更した後でサイトをロードするためにも機能しました。ありがとう!– rhandは今編集中
rhand

Homestead.yamlファイルの小文字または大文字の問題である可能性もあります。たとえば、/phpmyadmin実際のディレクトリ名にマッピングしていましたphpMyAdmin
Pathros

1
このソリューションを使用する理由は、データベースデータをそのまま保持するためです。このソリューションについて詳しくは、laracasts.com
channels

8

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

  1. 「/ etc / ngnx / sites-available / domain」のserver.root設定が「Homestead.yaml」のsites.to設定と一致していることを確認する必要があるかもしれません。

  2. 一致しない場合は、変更して「sudo service nginx restart」でWebサーバーを再起動します。

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


7

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

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

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


1
Arda、ありがとう!それが鍵です。それは私に数時間かかりました:(仮想マシンの中に行って実行する必要があります:composer create-project laravel / laravel folder-name
gtamborero

1
「入力ファイルが指定されていません」エラーについて理解することが重要なのは、ホストマシンでHomestead.yamlの構成を確認することです->このファイルには、サイトマッピングが含まれています(マップ:homestead.test to:/ home / vagrant / code / public)これは、仮想マシンに移動してroot-> / home / vagrant / code / public /に移動した場合、そこにhtml phpファイルがなければならないことを意味します。そこにない場合は、次を実行します:composer create-project laravel / laravel :)すべてが機能する場合は、「〜/」が「c:/ windows / users / yourname /」を意味することを知っている必要があるため、sincronizedファイルが存在します。浮浪者からホストへ
gtamborero

5

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

homestead destroy
homestead up

悲しいことに、これは私にとっても機能し、私のデータベースは毎回破壊されます。これに対する解決策を見つけましたか?
LoveAndHappiness

代わりに「ホームステッドプロビジョニング」を実行できる場合があります。また、まだデータベースを保護していない場合に備えて、シーダーと移行をセットアップすることをお勧めします。
Rayzor

これは私の問題を修正します:D、そしてこれは良いことです:laracasts.com/lessons/say-hello-to-laravel-homestead-two
Ihab Shoully

5

同じ問題がありました

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

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

これが他の誰でもうまくいくことを願っています。


3

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

これは私のために働きました:

vagrant destroy
vagrant up

1
vagrant destroyを使用しないでください。仮想マシンを正常にシャットダウンするには、vagrant haltを使用してください。
AbdulBasit


2

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

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

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

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

私はこれを多くの検索の後に初めて気づいたので、これが誰かを助けることを願っています。


2

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

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

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

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


2

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

私はhomestead.localドメインをPINGして、結果を得ていました。

しかし、ブラウザでhttp://homestead.localと入力すると、「入力ファイルが指定されていません」エラーが発生しました

code / publicフォルダーを確認したところ、インデックスファイルがありませんでした。どういうわけか欠落していたデフォルトのファイルをシステムが探していると確信していました。

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

更新:

次にHomestead.yamlファイルに変更を加えた後にそれが発生したとき、私はvagrant reload --provisionコマンドを実行し、それは機能しました。

実行vagrant reloadのみでは、浮浪者ボックスはプロビジョニングされないようです。こちらをお読みください


1

注意:Linuxでは大文字と小文字が区別されます。これが「コード」と「コード」ディレクトリが表示される理由です。

私がやろうとしていることは、迷惑なセットアップをやり直し、それをシンプルに保ち、ホームステッドボックスがデフォルトとして持っているものと一致させたい場合は、ホストマシンの「コード」のディレクトリを大文字にします。

後でHomestead設定にサイトを追加する場合に備えて、「フォルダー」セクションでマシンの「コード」フォルダーにマップすることもできます。そうすることで、/ home / vagrant / Code /の下にすべてのサイトプロジェクトが表示され、それらの「パブリック」ディレクトリを指すより多くのサイトを割り当てることができます。


ありがとう、@ noeldiaz!昨日、私はあなたが言ったことをやった。vagrantを再度ダウンロードし、「rm -r Homestead」を使用してHomesteadディレクトリを削除し、vagrant upを実行したところ、vagrant upプロシージャがnginxサーバーの起動などの追加の処理を実行していることがわかりました。私がサイトを試したとき、それはうまくいきました!また、「コード」「コード」フォルダの問題は解消されました:)「フォルダ」セクションまで、あなたが提案したことも行いました。サーバー/仮想ボックスの問題をデバッグする方法がわからないようですが、私は少し怖いですが、続行します!私は本当にあなたの助けに感謝します:)
ブライアント

1

これは、nginx Webサーバーが正しいパスを指していないためと考えられます。

:あなたが見なければならないという二つの鍵がありますmap下のキーfolderstoキーの下にsitesfoldersキーは、浮浪者VMにローカルマシン上のフォルダをマッピングします。このsitesキーは、nginxに仮想ホストを作成するために使用されますto

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

問題は、でlaravelプロジェクトを作成したことcomposer create laravel/laravelです。これにより、現在のディレクトリにというフォルダが作成されましたlaravel。次に、ディレクトリを変更せずに、Homestead Helperをでインストールしました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/laravel51パスはvagrant VMにマウントされています。アプリのディレクトリがあるlaravelプロジェクトのルートを指しているため、これは間違ったディレクトリです。ここで起こったことは、私がプロジェクトルートにいるときにHomestead Helperを必要とするはずだったということです。

だから今問題は私が何をするのですか?あなたの現在の家産VMを排除して、最初からやり直しますが、プロジェクトのルートからこの時間:2つのオプションを持っているORあなたが既に持っているものをサルベージ。

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

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

.vagrant
Homestead.yml
Vagrantfile

composer.jsonあなたが後でそれを必要とすることがありますので、必要ありません。

これらのファイルをlaravelプロジェクトルートに移動し、現在の作業ディレクトリをそこに変更します(cd laravel)。その時点で、単にmapunder foldersを更新し、プロジェクトルートを指していることを確認します。また、tositestoキーがそれに追加されたキーの下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

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

私のようにあなたが試しhomestead up --provision、うまくいかなかった場合!次にこれを試してください(私にとってはうまくいきます):

  • homestead destroy
  • homestead up

1

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

TL; DR;

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


1

私にとって同じ問題。

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

vagrant reload --provision


0

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

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

0

これが私の解決策です:

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

ここに画像の説明を入力してください


0

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

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

ドメインの構成ファイル(私にとっては/etc/nginx/sites-available/demo.app)は、「/ home / vagrant / Code / demo / public」の代わりに「/ home / vagrant / Code / Laravel / public」を構成していました。 」

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


0

私はホームステッドで同様の問題があり、ボックスをプロビジョニングするだけでうまくいきました。だからあなたはこれを試すべきです:

vagrant provision


0

vagrant provision関連するコードが機能しませんでした。しばらくしてから、システム全体を再起動しました。今では動作します...-、-」


0

I編集homestead.yamlhostsに応じて、このlaracastチュートリアル及び再開ステッド用いvagrant suspendvagrant halt/、等vagrant up。私も試しましたvagrant provision、コンピュータno file specified再起動した後でのみ消えましたが、上記のすべてを実行した後(Windows 7 PCを使用している)、立ち去りました。それは確かに時間がかかり、トリッキーなエラーです。

これはhomestead.yaml2つの 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

注:とには2つの別々のlaravelインストールがD:\Projects\ProjectOneあります。D:\Projects\ProjectTwo

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

PS私はこれをWindows上のLaravel 5.2でテストしました


0

これは、アプリケーションを提供するためにnginxサーバーを適切に設定する必要があるために発生します。これは、このガイドに続いて、「Configure Nginx and the Web Root」で開始できます。

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

root /usr/share/nginx/html;

/home/vagrant/Projects/ProjectOne/public

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

index index.html index.htm;

これに

index index.php index.html index.htm;

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

sudo service nginx restart

これでアプリケーションが提供されるはずです。


0

私はそのような問題を抱えていました。Homestead.yamlファイルとすべてのファイルを確認し、すべての設定が正しいことを確認しました。次の手順を実行すると、問題は解決しました。

1-vagrant @ homestead:〜$コマンドラインにいる場合は、exitcommandと入力します。

2-これで、Homesteadフォルダー内にいる必要があります。このコマンドを実行する

vagrant reload --provision

3-実行 vagrant ssh

ブラウザに関連アドレスを入力すると、Laravelページが表示されます。


0

コンピュータを再起動してみてください

ローカルで実行中のHomesteadが機能していて、ある時点で停止し、「入力ファイルが指定されていません」エラーが発生しました。追跡できませんでした。

コンピュータを再起動すると、エラーが消えました。


0

Homesteadプロジェクトを含むフォルダーの名前を変更した場合、このエラーが発生します。ご訪問Homestead.yamlください、その後、ファイルをリネームフォルダにポイントへの参照を更新しvagrant up、再び(など)


0

新しいバージョンのlarval 7> =を使用している場合、homestedディレクトリから使用できます vagrant provision

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.