web-dev-qa-db-fra.com

Laravel Homestead: 403 interdit sur nginx

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.

30
user3710669

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

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/listsGET 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).

26
castt

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.

9
Nathan Gielis

OK, j'ai eu la réponse à la question après quelques heures de recherche et de débogage.

Le problème:

  1. J'ai GET route / admin
  2. De plus, j'ai le dossier / public/admin/ avec les ressources à l'intérieur.
  3. Et j’ai un accès 403 refusé par nginx à cause de cette duplication;

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.

7
alexglue

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.

6
MrMesees

Je suggère de vérifier les journaux nginx - utilisez Sudo tail /var/log/nginx/Homestead.app-error.log

4
dominiczaq

Voici les étapes complètes de la solution:

  1. exécuter Homestead edit

  2. ajoutez/publicà la fin de votre répertoire

sites: - map: Homestead.app to: /full/path/to/the/laravel-app/public

  1. exécuter Homestead halt && Homestead up --provision
3
Mahmoud Zalt

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

2
Abdulaziz Noor

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!

1
Alexander Lomia

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!

1
Ganesh Karki

Accédez dans votre navigateur

Homestead.app/public

Avant l'installation de laravel/laravel avec le compositeur dans/home/vagrant/Code/Laravel/public

1
Lucas Paz

Ma solution a été de déplacer l'adresse dans le fichier hôte au bas du fichier. Cela m'est arrivé deux fois.

0
Francisco Pérez

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: 

  1. Installer Homestead (n'oubliez pas de définir votre fichier hosts) 
  2. 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) 
  3. Téléchargement et configuration le paquet PHAR
  4. cd ~/Code 
  5. laravel new Laravel
  6. Accédez à http://Homestead.app:8000

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.

0
Alex