Je viens d'installer Laravel Homestead conformément à leurs instructions. Lorsque j'ouvre http://Homestead.app:8000 je reçois la réponse HTTP interdite nginx 403.
J'ai essayé de définir les autorisations d'application/de stockage sur 755, mais cela n'a pas fonctionné. J'ai donc rechargé Vagrant. Sans autre résultat.
J'ai aussi essayé de changer la configuration de nginx, mais sans succès.
J'ai eu le même problème et pour moi la cause était que dans le fichier Homestead.yaml, j'ai mal mis ceci:
sites:
- map: Homestead.app
to: /home/vagrant/Code
Au lieu de la syntaxe correcte:
sites:
- map: Homestead.app
to: /home/vagrant/Code/path/to/public
Une autre raison de cette réponse peut être la duplication de votre routage avec des dossiers dans un répertoire public. Par exemple, vous pourriez avoir Homestead.app/lists
GET
route et le dossier lists
dans votre répertoire /public
. Cela provoquera la même erreur 403 (le serveur supposera que vous essayez d'accéder au répertoire /public/lists
au lieu de votre route /lists
).
Je me suis cogné la tête contre le mur qui traite de ce même problème et je l'ai résolu pour mon cas.
J'étais sûr d'avoir correctement configuré le fichier yaml, mais je continuais à avoir l'erreur 403 et, lors de l'expérimentation de certaines routes, je obtenais le "fichier d'entrée non spécifié".
Ma solution venait de http://laravel.com/docs/4.2/Homestead et elle impliquait l'utilisation de la commande serve. Je n'ajoutais pas de sites supplémentaires, j'essayais simplement de faire fonctionner le premier site.
SSH dans ma boîte vagabonde et l’utilisation de la commande "serve my_app_name.app/home/vagrant/Code/chemin/to/public" a fait le travail. Notez que j'avais déjà mis une entrée dans mon fichier hosts pour cette application.
J'espère que ça aide quelqu'un.
OK, j'ai eu la réponse à la question après quelques heures de recherche et de débogage.
Le problème:
Donc, si vous ne voulez pas renommer la route ou le dossier des ressources, il vous suffit de remplacer
location / {
try_files $uri $uri/ /index.php?$query_string;
# ^^^^^
}
avec ça:
location / {
try_files $uri /index.php?$query_string;
}
Si vous pouviez renommer votre route ou votre dossier d’actifs sans refactor, vous pourrez le faire sans correction de la configuration de nginx.
J'espère que cela vous sera utile.
Pour certaines personnes, cela peut être aussi simple que d'avoir git cloné dans un dossier public existant, par exemple:
- map: hello-world.dev
to: /home/vagrant/Code/Laravel/public/hello-world
La structure de dossier correcte est:
- map: hello-world.dev
to: /home/vagrant/Code/hello-world/public
Une autre bonne chose est d'ignorer les documents laravel sur l'édition du fichier hosts, d'utiliser git Shell ou cygwin (windows) pour installer hostsupdater vagrant, et d'ajouter simplement des entrées pour les hôtes et alias dans le fichier ~/.Homestead/Homestead.yaml.
Je suggère de vérifier les journaux nginx - utilisez Sudo tail /var/log/nginx/Homestead.app-error.log
Voici les étapes complètes de la solution:
exécuter Homestead edit
ajoutez/public
à la fin de votre répertoire
sites:
- map: Homestead.app
to: /full/path/to/the/laravel-app/public
Homestead halt && Homestead up --provision
Changer la configuration de Nginx
Mettez cette ligne dans la section 'location /':
try_files $uri $uri/public/index.php?$query_string;
Si cela ne fonctionne pas, remplacez votre 'public' par le nom de dossier qui contient 'index.php',
Cela fonctionnait très bien avec ServerPilot,
Bonne chance!.
Dans mon cas, à des fins de test, je n'avais que le fichier phpinfo.php dans le répertoire public. Le serveur continuait à afficher des erreurs 403 jusqu'à ce que je place un fichier nomméindex.phpdans le dossier public!
Dans votre cas, vous obtenez nginx 403 interdit Réponse HTTP en raison d'une configuration incorrecte de sites dans Homestead.yaml
, Si vous le configurez correctement, cela devrait fonctionner.
Comment résoudre le problème étape par étape:
1) Allez dans votre boîte de vagabonds et créez l'application laraval
$vagrant ssh
$cd ~/code
$#lets create basic blog
$laravel new blog
Crafting application...
Loading composer repositories with package information
........
$cd blog
$ll
# You should be able to see public folder in this dir.
# this is the entry point for your application.
# this is your public dir: ~/code/blog/public
# more explicitly: /home/vagrant/code/blog/public
$exit # exit ssh
2) Mettre à jour le fichier Homestead.yaml avec les informations de site appropriées
- map: Homestead.app
to: /home/vagrant/code/blog/public # should be same as in step1
3) Réapprovisionner votre vagabond
$vagrant reload --provision
Vous devriez pouvoir y accéder maintenant en utilisant http://Homestead.app Merci!
Accédez dans votre navigateur
Homestead.app/public
Avant l'installation de laravel/laravel avec le compositeur dans/home/vagrant/Code/Laravel/public
Ma solution a été de déplacer l'adresse dans le fichier hôte au bas du fichier. Cela m'est arrivé deux fois.
Je me suis heurté à cela lorsque j'ai essayé de créer manuellement mon premier site. La réponse de @ GregD m'a aidé à découvrir le problème! Vagrant/Homestead/Laravel fonctionnera normalement de manière autonome si vous utilisez les fonctionnalités intégrées.
Le fichier de configuration de Homestead est préconfiguré pour un site, situé dans /Code/Laravel/
. Quelques étapes pour que ce test soit opérationnel:
vagrant up
et connectez-vous à votre machine virtuelle via ssh ( Chrome Secure Shell est excellent si vous n’avez pas encore de terminal sur votre machine) cd ~/Code
laravel new Laravel
. Cela créera votre premier site avec les autorisations appropriées. Vous pouvez modéliser les futurs sites après les autorisations de celui-ci ou simplement utiliser les nœuds "sites" de Homestead.yaml
et laravel new <site>
pour créer de nouveaux sites à l'avenir.