Utilisation de Laravel Homestead: 'aucun fichier d'entrée spécifié'


113

Je suis nouveau dans l'utilisation de Laravel et Homestead et j'apprécierais toute aide ou un point dans la bonne direction. J'ai réussi à accéder à l'écran "Vous êtes arrivé" lorsque je lance "php artisan serve" mais quand j'essaye de faire la même chose via Vagrant, j'obtiens "aucun fichier d'entrée spécifié". Mon fichier Homestead.yaml ressemble à ceci:

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

Sur mon ordinateur, j'ai les répertoires suivants:

/Users/me/code/Homestead
/Users/me/code/exampleproject //this is the directory created with composer

Sur ma Vagrant Box, j'ai pour une raison quelconque deux répertoires nommés "code" et "Code":

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

J'ai vérifié et je peux voir que les modifications apportées aux fichiers exemple de mon ordinateur sont reflétées dans les fichiers de la boîte vagrant.

Je ne sais pas vraiment comment comprendre cela !! J'apprécierais vraiment toute aide possible :)

Réponses:


163

Au lieu de réinstaller, essayez

vagrant up --provision

ou

homestead up --provision

1
vagrant up --provisionn'a pas fonctionné pour moi, mais a homestead up --provisionfait
zillaofthegods

Merci beaucoup!
yohannan_sobin

1
Fais juste vagrant reload --proivision.
Omar Tariq

1
Cette méthode fonctionne aussi, vous pouvez essayer de détruire et de vagabonder, puis je fais toutes les configurations et c'est beaucoup plus propre.
George Plamenov Georgiev

salut j'ai le même problème ici au lieu de homestead je l'exécute dans cpanel des suggestions?
Aslam

45

J'ai eu exactement le même problème et j'ai trouvé la solution grâce à l'utilisation de larachat.

Voici comment y remédier, vous devez avoir les paramètres de votre fichier homestead.yaml corrects. Si vous voulez savoir comment c'est fait, suivez le tutoriel de Jeffery Way sur homestead 2.0 https://laracasts.com/lessons/say-hello-to-laravel-homestead-two .

Maintenant, pour résoudre le Input not specifiedproblème, vous devez ssh dans la boîte de propriété et taper

serve domain.app /home/vagrant/Code/path/to/public/directorycela générera un script de service pour nginx. Vous devrez le faire à chaque fois que vous changez de projet.

Il a également discuté de ce que j'ai expliqué dans cette série https://laracasts.com/series/laravel-5-fundamentals/


2
Ceci est exactement ce que je cherchais. Merci Rudy!
Matthew Fritz

Je suppose que le problème se produit si vous ajoutez un autre projet à Homestead, n'est-ce pas? N'est-il pas possible de s'exécuter serveautomatiquement pour tous?
Volatil3

Merci d'avoir partagé le tutoriel. Ça marche maintenant!
Dan Aronne

Avec une nouvelle installation de vagrant, virtualbox, homestead ... et en essayant de détruire / monter, la commande serve est ce qui a finalement fonctionné. Merci
Chris

28

Ceci est facile à résoudre, car vous avez changé le nom du dossier en: exempleprojet

Alors SSH à votre vagabond:

ssh vagrant@127.0.0.1 -p 2222

Puis changez votre configuration nginx:

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

Modifiez l'URI correct à la racine sur la ligne 3 avec le nouveau nom de dossier :

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

Redémarrez Nginx

sudo service nginx reload

Rechargez le navigateur Web, cela devrait fonctionner maintenant


meilleure réponse dans tout le Web pour ce problème. gloire!
Defkon1

Cela a verrouillé mon ordinateur. Ce serait bien si les raisons de ces commandes étaient données - exactement pourquoi elles sont nécessaires et ce qu'elles font.
Joshua Foxworth

24

Pour moi, ce qui suit a fonctionné:

vagrant reload --provision


1
Cela a également fonctionné pour moi pour qu'il charge les sites après avoir changé le répertoire hôte de base en Code au lieu de webdesign. Merci! - rhand vient de modifier
rhand

Il peut également s'agir d'un problème de minuscules ou de majuscules dans le Homestead.yamlfichier. Par exemple, je mappais sur le /phpmyadminmoment où c'était le nom de mon répertoire phpMyAdmin.
Pathros

1
La raison pour laquelle j'utilise cette solution est qu'elle conserve les données de ma base de données intactes. Cette solution est décrite plus en détail ici: laracasts.com/discuss/channels/general-discussion/…
lwitzel

8

Donner ma réponse au cas où quelqu'un serait aux prises avec ce problème.

  1. Vous devrez peut-être vérifier que la configuration server.root dans "/ etc / ngnx / sites-available / domain" correspond à votre configuration sites.to dans "Homestead.yaml".

  2. S'il ne correspond pas, modifiez-le et redémarrez le serveur Web avec "sudo service nginx restart"

  3. Et toujours les choses ne fonctionnent pas alors autorisez l'autorisation d'écriture pour le dossier "YOURSITE / app / storage" comme "chmod -R 777 app / storage"


7

J'ai également eu le même problème, j'avais supposé que Laravel était installé "prêt à l'emploi" mais il semble que ce ne soit pas le cas. Je me suis connecté en SSH à la machine et j'ai exécuté ces commandes:

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

Et tout fonctionnait comme d'habitude.


1
Merci Arda! Voilà la clé. Cela m'a pris quelques heures: (Vous devez entrer dans la machine virtuelle et exécuter: composer create-project laravel / laravel nom-dossier
gtamborero

1
Ce qu'il est important de comprendre avec l'erreur "Aucun fichier d'entrée spécifié", c'est de regarder sur votre machine hôte la configuration de Homestead.yaml -> Ce fichier contient le mappage de vos sites (map: homestead.test vers: / home / vagrant / code / public) Cela signifie que si vous allez sur votre machine virtuelle dans root-> / home / vagrant / code / public / vous devez y avoir vos fichiers html php. S'il n'y en a pas, lancez le: composer create-project laravel / laravel :) Si tout fonctionne alors vous devez savoir que "~ /" signifie "c: / windows / users / yourname /" donc il y aura vos fichiers sincronisés de vagabond à votre hôte
gtamborero

5

Ce problème s'est produit pour moi après avoir modifié le fichier Homestead.yaml. J'ai résolu ce problème en

homestead destroy
homestead up

Malheureusement, cela fonctionne pour moi aussi, ce qui entraîne la destruction de mes bases de données à chaque fois. Avez-vous trouvé une solution pour cela?
LoveAndHappiness

Vous pourrez peut-être simplement faire de la «fourniture de propriété familiale» à la place. Aussi, si vous ne l'avez pas déjà fait, je vous recommande de configurer des seeders et des migrations afin que vous puissiez être moins protecteur de la base de données.
Rayzor

Cela résout mon problème: D, et c'est bien: laracasts.com/lessons/say-hello-to-laravel-homestead-two
Ihab Shoully

5

J'ai eu les mêmes problèmes

Mais j'ai oublié que les spécifications indiquaient que le fichier de configuration serait situé à

~ / .homestead / Homestead.yaml et mettait à jour ~ / Homestead / src / stubs / Homestead.yaml

Donc, le FIX consistait à mettre à jour le fichier Homestead.yaml situé ici à

~ / .homestead / Homestead.yaml

Avant

sites: - map: homestead.app to: /home/vagrant/Laravel/public

Après

sites: - map: homestead.app to: /home/vagrant/Code/mysitename/public

Puis j'ai couru
vagrant up --provision

J'espère que cela fonctionne pour n'importe qui d'autre.


3

Après avoir renommé certains répertoires, j'ai dû détruire et relancer vagrant. Aucune des solutions ici n'a fonctionné.

Cela a fonctionné pour moi:

vagrant destroy
vagrant up

1
Ne pas user vagrant destroy, utiliser vagrant halt pour arrêter en douceur votre machine virtuelle.
AbdulBasit le


2

J'ai eu le même problème en suivant la documentation Laravel ( https://laravel.com/docs/5.2/homestead )

Mon problème était très simple, j'ai manqué de lire cette partie dans la documentation:

Le fichier Homestead.yaml sera placé dans le répertoire caché ~ / .homestead:

Je mettais donc à jour le mauvais fichier Homestead.yaml, car le fichier a été déplacé lorsque j'ai exécuté la commande bash init.sh.

Je ne m'en suis rendu compte qu'après de nombreuses recherches, alors j'espère que cela aidera quelqu'un.


2

J'étais juste aux prises avec la même situation. Après avoir résolu le problème:

Si vous avez une structure de répertoires comme celle-ci:

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

Créez simplement un dossier «public» dans exampleproject sur votre machine hôte.


2

J'utilise Windows 10 et j'ai la configuration Homestead suivante

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

J'ai PING ed le domaine homestead.local et j'obtenais des résultats.

Mais lorsque j'ai tapé http: //homestead.local dans le navigateur, j'ai eu l' erreur `` aucun fichier d'entrée spécifié ''

J'ai vérifié le code / dossier public et il n'y avait pas de fichier d'index. J'étais sûr que le système recherchait le fichier par défaut qui manquait en quelque sorte.

Une fois que j'ai créé un fichier d'index, il a commencé à fonctionner correctement.

Mettre à jour:

La prochaine fois que cela s'est produit après un changement dans le fichier Homestead.yaml , j'ai exécuté la vagrant reload --provisioncommande et cela a fonctionné.

Il semble que courir vagrant reloadseulement ne fournira pas la boîte vagabonde. Lisez ici


1

Attention, Linux est sensible à la casse. C'est probablement pourquoi vous voyez un répertoire "Code" et un répertoire "code".

Ce que je ferais, c'est refaire la configuration du vagabond à nouveau et si vous voulez rester simple et correspondre à ce que la boîte Homestead a par défaut, faites votre répertoire dans votre machine hôte "Code" avec des majuscules.

Vous pouvez également dans la section «dossiers» simplement mapper vers votre dossier «Code» dans votre machine, au cas où vous décideriez d'ajouter plus de sites à votre configuration de Homestead plus tard. De cette façon, sous / home / vagrant / Code / vous verrez tous vos projets de site et vous pourrez voir plus de sites pointant vers leurs répertoires "publics".


Merci, @noeldiaz! Hier, j'ai fini par faire ce que vous avez dit. J'ai téléchargé à nouveau vagrant, puis supprimé mon répertoire Homestead avec "rm -r Homestead", puis j'ai téléchargé vagrant up, et quand je l'ai fait, j'ai vu que la procédure vagrant up exécutait des choses supplémentaires comme le démarrage du serveur nginx. Quand j'ai essayé le site, cela a fonctionné! De plus, le problème du dossier «code» «Code» a disparu :) J'ai également fait ce que vous avez suggéré, en ce qui concerne la section «dossiers». J'ai un peu peur, car il semble que je ne comprends pas comment déboguer un problème de serveur / boîte virtuelle », mais je continuerai! J'apprécie vraiment votre aide :)
bryant

1

Cela est probablement dû au fait que le serveur Web nginx ne pointe pas vers le bon chemin.

Il y a deux clés que vous devriez regarder: la mapclé sous folderset la toclé sous sites. La foldersclé mappe les dossiers de votre machine locale sur la VM vagabonde. La sitesclé est utilisée pour créer un hôte virtuel sur nginx avec la valeur dans to.

Ce que vous voulez vous assurer, c'est que tosous sitespointe vers le bon chemin public.

Le problème était que j'avais créé mon projet laravel avec composer create laravel/laravel. Cela a créé un dossier dans mon répertoire actuel nommé laravel. Ensuite, sans changer de répertoire, j'ai installé l'assistant de ferme avec composer require laravel/homestead --dev.

Après l'exécution php vendor/bin/homestead makeet vagrant upma structure de répertoires ressemblait à ceci:

$ cd laravel51
$ ls -a
.
..
.vagrant
laravel
composer.json
composer.lock
vendor
Homestead.yml
Vagrantfile 

Mon Homestead.yml ressemblait à ceci:

folders:
    - map: "/Users/USER/Sites/sandbox/php/laravel51"
      to: "/home/vagrant/laravel51"

sites:
    - map: laravel51
      to: "/home/vagrant/laravel51/public"

Si vous regardez de plus près, le /Users/USER/Sites/sandbox/php/laravel51chemin sera monté sur la VM vagabonde. Ce n'est pas le bon répertoire car il doit pointer vers la racine du projet laravel où se trouve le répertoire de votre application. Ce qui s'est passé ici, c'est que j'étais censé avoir besoin de l'aide de la ferme pendant que j'étais à la racine du projet .

Alors maintenant, la question est: que dois-je faire? Vous avez deux options: vous débarrasser de votre VM homestead actuelle et recommencer, mais cette fois à partir de la racine du projet OU récupérer ce que vous avez déjà.

Si vous souhaitez récupérer ce que vous avez, vous devrez déplacer plusieurs fichiers et un dossier vers la racine de votre projet laravel.

Voici les artefacts dont vous aurez besoin pour déplacer:

.vagrant
Homestead.yml
Vagrantfile

Le composer.jsonne sera pas nécessaire puisque vous OBLIGEANT plus tard.

Déplacez ces fichiers vers la racine de votre projet laravel et remplacez-y votre répertoire de travail actuel ( cd laravel). À ce stade, mettez simplement à jour le mapsous folderset assurez-vous qu'il pointe vers la racine du projet. Assurez-vous également que la toclé ci-dessous sitesest la toclé ci-dessous foldersavec un /publicappendice.

Par exemple:

folders:
    - map: "/Users/USER/Sites/sandbox/php/laravel51/laravel"
      to: "/home/vagrant/laravel51"

sites:
    - map: laravel51
      to: "/home/vagrant/laravel51/public"

Maintenant, exécutez composer require laravel/homestead --devpour que l'assistant homestead soit requis dans le fichier composer.json de votre projet actuel et installé.

Courez vagrant reload --provisionet vous devriez être prêt.


1

Cela se produit généralement lorsque vous modifiez le fichier Homestead.yaml .

Si comme moi vous avez essayé homestead up --provisionet n'avez pas fonctionné! alors essayez ceci (cela fonctionne pour moi):

  • homestead destroy
  • homestead up

1

Les versions plus anciennes de Homestead mappent les dossiers ~/Codepar exemple par défaut ~/Code/laravel/public. Notez les capitalisations de cas dans ~/Code. Ceux-ci sont sensibles à la casse. Les nouvelles versions utilisent des minuscules ~/code. Mettez à jour ces répertoires dans votre en Homestead.yamlfonction de vos répertoires réels.

TL, DR;

Mettez ~/Codeà jour ~/codeou vice versa en fonction de vos noms de répertoire réels.


1

Même problème pour moi.

Ni l'un vagrant provisionni l' autre ou n'a homestead up --provisionfonctionné pour moi, mais ce qui suit a fonctionné - probablement car homestead était déjà en cours d'exécution lorsque j'ai modifié le fichier yml

vagrant reload --provision


0

Dans Laravel 5, je devais ssh dans mon serveur homestead et exécuter ces commandes:

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

0

Voici ma solution:

C'est un problème de chemin de fichier, voici donc les chemins de mes dossiers et sites. De plus, j'ai dû utiliser "vagrant destroy" car l'approvisionnement ne fonctionnait pas.

entrez la description de l'image ici


0

Mon problème était dans le fichier de configuration du domaine:

le dossier public de mon projet a été créé dans / home / vagrant / Code / demo / public

le fichier de configuration du domaine (pour moi /etc/nginx/sites-available/demo.app) avait configuré: "/ home / vagrant / Code / Laravel / public" au lieu de "/ home / vagrant / Code / demo / public ".

Maintenant, il fonctionne parfaitement.


0

J'ai eu des problèmes similaires avec Homestead et l'approvisionnement de la boîte a fonctionné pour moi. Alors vous devriez essayer ceci:

vagrant provision


0

vagrant provisionles codes associés ne fonctionnaient pas pour moi, après avoir perdu du temps, j'ai redémarré tout le système. Maintenant ça marche... -,-"


0

J'édité homestead.yamlet hostsselon ce tutoriel laracast et ferme relancée par vagrant suspend, vagrant haltetc. / vagrant up; J'ai essayé vagrant provisionaussi, mais no file specifiedje ne suis parti qu'après avoir redémarré mon ordinateur (je suis sur un PC Windows 7) après avoir fait tout ce qui précède. C'est certainement une erreur fastidieuse et délicate.

Voici à quoi homestead.yamlressemble mon travail pour deux projets 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

et voici mon hostsdossier:

...
127.0.0.1       localhost
192.168.10.10   projectone.app
192.168.10.10   projecttwo.app

Notez qu'il existe deux installations distinctes de laravel dans D:\Projects\ProjectOneetD:\Projects\ProjectTwo

J'accède ensuite au premier projet en tapant projectone.app:8000dans le navigateur et projecttwo.app:8000pour le deuxième projet.

PS j'ai testé ceci pour Laravel 5.2 sur Windows


0

Cela se produit parce que vous devez configurer correctement votre serveur nginx afin de servir votre application. Vous pouvez le faire en suivant ce guide, en commençant par la rubrique Configurer Nginx et la racine Web .

Après avoir correctement configuré votre lien symbolique entre votre / etc / nginx / sites-available et / etc / nginx / sites-enabled, vous devez vous assurer que votre variable racine est définie sur le chemin du dossier de votre application. Définissez votre racine nginx à partir de

root /usr/share/nginx/html;

à

/home/vagrant/Projects/ProjectOne/public

De plus, vous devez placer index.php avant vos fichiers html afin que php soit servi avant html. Change ça

index index.html index.htm;

pour ça

index index.php index.html index.htm;

Une fois votre configuration terminée, redémarrez votre serveur nginx avec

sudo service nginx restart

Votre demande doit être signifiée maintenant.


0

J'ai eu un tel problème. J'ai examiné le fichier Homestead.yaml et tous les fichiers et tous les paramètres étaient corrects. Mon problème a été supprimé après les étapes suivantes.

1-Si vous êtes dans vagrant @ homestead: ~ $ ligne de commande, tapez exitcommande.

2- Vous devez maintenant être dans le dossier Homestead. exécuter cette commande

vagrant reload --provision

3- courir vagrant ssh

Maintenant, si vous tapez l'adresse associée dans votre navigateur, la page Laravel devrait s'afficher.


0

Essayez de redémarrer votre ordinateur

Avait un Homestead fonctionnant en cours d'exécution localement, qui à un moment donné s'est arrêté et obtiendrait l'erreur «Aucun fichier d'entrée spécifié». Je n'ai pas pu le retracer.

Avec un redémarrage de l'ordinateur, l'erreur a disparu.


0

Si vous avez renommé le dossier contenant votre projet Homestead, vous obtiendrez cette erreur. Visitez votre Homestead.yamlfichier et mettez à jour toutes les références pour pointer vers le dossier renommé, puis vagrant uprecommencez (etc.)


0

Si vous utilisez une nouvelle version de larval 7> = vous pouvez utiliser à partir de votre répertoire homested vagrant provision

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.