web-dev-qa-db-fra.com

Laravel - Interdit Vous n'avez pas la permission d'accéder/à ce serveur

Mon installation de laravel fonctionnait bien hier mais aujourd'hui, l'erreur suivante apparaît:

Forbidden

You don't have permission to access / on this server.

Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.

Est-ce que quelqu'un sait où je vais mal?

23
panthro

Créez et mettez ce fichier .htaccess dans votre dossier d'installation de laravel.

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^public
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
31
Alex

J'ai rencontré le même problème, puis je fais comme la solution de @lubat et mon projet fonctionne bien. : D Ma configuration virtualhost:

<VirtualHost *:80>
     ServerName laravelht.vn
     DocumentRoot D:/Lavarel/HTPortal/public
     SetEnv APPLICATION_ENV "development"
     <Directory D:/Lavarel/HTPortal/public>
         DirectoryIndex index.php
         AllowOverride All
         Require all granted
         Order allow,deny
         Allow from all
     </Directory>
 </VirtualHost>
16
Hieu Tran AGI

Avez-vous essayé de changer le fichier .htaccess suggéré par laravel si celui par défaut ne fonctionne pas? J'ai eu ce problème similaire et l'ai changé en 

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

et ça a fait :)

Vérifiez votre configuration d'hôte virtuel . Pour Ubuntu, vous pouvez le trouver à /etc/Apache2/sites-available/yourlaravel.conf

<VirtualHost *:80>
ServerName yourlaravel.com
DocumentRoot "/path/to/your/laravel/project/public"
ServerAlias *.yourlaravel.com

<Directory "/path/to/your/laravel/project/public">
    AllowOverride All
    Require all granted
</Directory>

La ligne de clé est Require all granted à l'intérieur de <Directory>.

J'espère que ça aide!

9
lubart

Pour ceux qui utilisent Mamp ou Mamp pro:

Open MAMP Pro
Click on “Hosts”
Click on “Extended” (UPDATE: Only if you are using MAMP Pro 3.0.6)
Check “Indexes”
Click “Save”
That’s it! Reload your localhost starting page and it should work properly.
9
star18bit

Il a été résolu pour moi avec le fichier public/.htaccess par défaut de Laravel en ajoutant une ligne supplémentaire:

Le fichier /public/.htaccess reste comme suit:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On
    DirectoryIndex index.php # This line does the trick

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
4
Evhz

Avec moi, le problème semblait être lié au fait qu’il n’y avait pas de fichier index.php dans le dossier public_html. Lorsque j’ai tapé cette adresse cependant: http://azxcvfj.org/public , cela a fonctionné (cette adresse n’est qu’un exemple. Elle ne pointe nulle part). Cela m'a fait réfléchir et je l'ai finalement résolu en procédant comme suit.

J'ai créé un fichier .htaccess dans le dossier racine de l'application (le dossier public_html) avec le contenu suivant:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ public/index.php [L]
</IfModule>

Et cela a fonctionné. En gros, avec ce fichier, vous dites au serveur (Apache) que chaque fois que quelqu'un essaie d'accéder au dossier HTML public ( http://azxcvfj.org ), un utilisateur redirigé est redirigé vers http: //azxcvfj.org/public/index.php

4
PieterVK

Ajoutez simplement un fichier .htaccess dans votre chemin de projet racine avec le code suivant pour rediriger le dossier public:

.HTACCESS

## Redirect to public folder
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^$ public/ [L]
    RewriteRule (.*) public/$1 [L]
</IfModule>

Très simple mais travaille pour moi sur mon serveur. 

Cordialement!

3

Pour moi, c’était juste parce que j’avais un dossier dans mon public_html nommé de la même manière que cette route!
alors s'il vous plaît vérifiez si vous n'avez pas de dossier avec l'adresse de cette route!
espérons être utile

3
Ali

Commencez par mettre à jour votre configuration d'hôte virtuel.

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/html/example-project/public
    <Directory /var/www/html/example-project/public/>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Ensuite, modifiez l'autorisation et la propriété de l'actif, comme illustré ci-dessous.

$ Sudo chgrp -R www-data /var/www/html/example-project
$ Sudo chmod -R 775 /var/www/html/example-project
2
Yves

Dans votre VirtualHost, écrivez DocumentRoot pour qu'il pointe vers votre application Laravel dans vos répertoires personnels. De plus, vous devez ajouter le répertoire indiqué ci-dessous, avec votre propre chemin:

<Directory /home/john/Laravel_Projects/links/public/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
    Require all granted
</Directory>

La deuxième étape consiste à accéder à votre projet Laravel et à exécuter la commande suivante.

Sudo chmod -R 777 storage bootstrap/cache

A la fin, redémarrez votre Apache2:

Sudo service Apache2 restart
2
Ioannis Chrysochos

Il est fort probable que si toutes les réponses ci-dessus ne vous ont pas aidé et que vous utilisez une validation de requête, vous avez oublié de mettre l'autorisation à true.

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class EquipmentRequest extends FormRequest {
  /**
   * Determine if the user is authorized to make this request.
   *
   * @return bool
   */
  public function authorize() {
    /*******************************************************/
    return true; /************ THIS VALUE NEEDS TO BE TRUE */
    /*******************************************************/
  }

  /* ... */
}
1
Amin NAIRI

Pour moi, il s'agissait simplement d'appeler route() sur une route nommée que je n'avais pas créée/créée de manière incorrecte. Cela a provoqué la page d'erreur interdite.

Le redémarrage du serveur Web a permis à Whoops! erreur à afficher: 

Route [nom-ma-route] non défini.

La correction du nom de route ->name('my-route-name') a corrigé l’erreur.

Ceci est sur Laravel 5.5 & using wampserver.

0
Andrew

Ceci est résolu mon problème en ajoutant cette ligne:

DirectoryIndex index.php
0
Pirman Dwiana

J'ai eu un problème avec la version d'URL du site Web autre que www. La méthode PUT ne fonctionnait pas Mais en entrant sur le site avec www. - ça fonctionne bien! 

0
Gediminas

J'ai eu le même problème et construit un fichier .htaccess pour résoudre ce problème avec quelques améliorations supplémentaires. Vous pouvez l'utiliser tel quel, il suffit de le télécharger à partir de Github Gist et de changer le nom du fichier "public/index.php" en "public/app.php" et voir comment cela fonctionne! :)

0
dude

J'ai eu cette erreur et je viens de coller le http://127.0.0.1:8000/ directement dans la barre d'URL .

je mettais dans localhost / http://127.0.0.1:8000/ pour obtenir l'erreur que vous avez mentionnée. 

0
DonQuery