私は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ファイルに反映されていることを確認しました。
どうやってこれを理解するかわからない!!私は可能な限りの助けを本当に感謝します:)
再試行する代わりに
vagrant up --provision
または
Homestead up --provision
私はまったく同じ問題を抱えており、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/
フォルダー名を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ブラウザーをリロードします。今すぐ動作するはずです
私にとっては、以下が働いた:
vagrant reload --provision
誰かがこの問題に苦労している場合に備えて私の応答を与えます。
「/ etc/ngnx/sites-available/domain」のserver.root設定が、「Homestead.yaml」のsites.to設定と一致することを確認する必要がある場合があります。
一致しない場合は変更し、「Sudo service nginx restart」でウェブサーバーを再起動します
それでも動作しない場合は、「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
同じ問題がありました
しかし、構成ファイルは次の場所にあると仕様書に記載されていることを忘れていました
〜/ .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
これが他の誰にも役立つことを願っています。
Laravelドキュメント( https://laravel.com/docs/5.2/Homestead )をフォローしているときに同じ問題が発生しました
私の問題は非常に単純で、ドキュメントのこの部分を読み逃しました:
Homestead.yamlファイルは〜/ .Homestead隠しディレクトリに配置されます:
そのため、bash init.shコマンドを実行したときにファイルが移動されたため、間違ったHomestead.yamlファイルを更新していました。
これは多くの検索をして初めて実現したので、これが誰かの助けになることを願っています。
Homesteadを再起動します。私のために働いた。
Homestead destroy
Homestead up
いくつかのディレクトリの名前を変更した後、Vagrantを破棄して再実行する必要がありました。ここでの解決策はどれもうまくいきませんでした。
これは私のために働いた:
vagrant destroy
vagrant up
注意点として、Linuxでは大文字と小文字が区別されます。それがおそらく「コード」ディレクトリと「コード」ディレクトリが表示される理由です。
私がやりたいことは、浮浪者の設定をもう一度やり直し、それをシンプルに保ち、Homesteadボックスのデフォルトを一致させる場合は、ホストマシンのディレクトリを大文字で「コード」にします。
後でHomesteadセットアップにサイトを追加することにした場合に備えて、「folders」セクションでマシンの「Code」フォルダーにマップすることもできます。そうすれば、/ home/vagrant/Code /の下にすべてのサイトプロジェクトが表示され、「パブリック」ディレクトリを指すサイトを追加できます。
古いバージョンのHomesteadは、~/Code
内のフォルダーをマップして、たとえばデフォルトで~/Code/laravel/public
と言います。 ~/Code
の大文字と小文字に注意してください。これらは大文字と小文字が区別されます。新しいバージョンでは、小文字の~/code
が使用されます。実際のディレクトリに従って、Homestead.yaml
のこれらのディレクトリを更新します。
TL; DR;
実際のディレクトリ名に応じて、~/Code
を~/code
に、またはその逆に更新します。
これは、nginx Webサーバーがnotが正しいパスを指しているためです。
確認する必要がある2つのキーがあります。map
の下のfolders
キーと、to
の下のsites
キーです。 folders
キーは、ローカルマシン上のフォルダーをVagrant VMにマップします。 sites
キーは、to
の値でnginxに仮想ホストを作成するために使用されます。
確認したいのは、to
の下のsites
がpublic
への正しいパスを指していることです。
問題は、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
を実行すると、すべて設定できます。
私は同じ状況に苦労していました。以下は問題を解決しました:
次のようなディレクトリ構造がある場合:
folders:
- map: /Users/me/code/exampleproject
to: /home/vagrant/code/exampleproject
ホストマシンのexampleproject内に「public」フォルダを作成するだけです。
私は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'エラーが発生しました
コード/パブリックフォルダをチェックしましたが、インデックスファイルはありませんでした。システムがデフォルトのファイルを探していたと確信していましたが、それはなんとなく欠落しています。
インデックスファイルを作成すると、正常に動作し始めました。
通常、これはHomestead.yamlファイルを編集するときに発生します。
私のようにHomestead up --provision
を試してみたが、うまくいかなかった!それからこれを試してください(私にとってはうまくいきます):
Homestead destroy
Homestead up
ホームステッドでも同様の問題があり、ボックスのプロビジョニングだけでうまくいきました。したがって、これを試してください:
vagrant provision
このlaracastチュートリアル に従ってHomestead.yaml
とhosts
を編集し、vagrant suspend
、vagrant halt
などを使用してHomesteadを再起動しました。/ vagrant up
;私もvagrant provision
を試みましたが、no file specified
は、コンピューターを再起動した後にのみ消えました(Windows 7を使用していますPC)上記のすべてを行った後。それは確かに時間のかかるトリッキーなエラーです。
これは私の作業Homestead.yaml
がtwolaravelのように見えるものです_プロジェクト:
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
には、laravelの2つの個別のインストールがあります。
次に、ブラウザーでprojectone.app:8000
と入力し、2番目のプロジェクトにprojecttwo.app:8000
と入力して、最初のプロジェクトにアクセスします。
追伸WindowsでLaravel 5.2に対してこれをテストしました
vagrant provision
関連コードは私にとってはうまくいきませんでした。しばらく時間が経った後、システム全体を再起動しました。これで動作します...-、-"
これは、アプリケーションを提供するために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
これで、アプリケーションが提供されます。
Laravel 5では、ホームステッドサーバーにsshして、これらのコマンドを実行する必要がありました。
Sudo chmod -R 777 storage
Sudo chmod -R 777 bootstrap/cache
私にとっても同じ問題です。
vagrant provision
とHomestead up --provision
はどちらも機能しませんでしたが、以下は機能しました-ymlファイルを変更したときにホームステッドがすでに実行されていたため
vagrant reload --provision
私の問題はドメインの設定ファイルにありました:
私のプロジェクトのパブリックフォルダーは/ home/vagrant/Code/demo/publicに作成されました
ドメインの構成ファイル(私にとっては/etc/nginx/sites-available/demo.app)が構成されていた:「/ home/vagrant/Code/demo/public」ではなく「/ home/vagrant/Code/Laravel/public」 「。
今では完璧に機能しています。