Laravel - Forbidden У вас нет прав доступа/доступа на этом сервере

Моя установка laravel работала хорошо вчера, но сегодня я получаю следующую ошибку:

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.

Кто-нибудь знает, где я ошибаюсь?

Ответы

Ответ 1

Создайте и поместите этот файл .htaccess в свою папку установки laravel.

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

Ответ 2

Я встретил ту же проблему, тогда я делаю то же самое, что и решение @lubat, и мой проект работает хорошо.: D Моя конфигурация виртуального хоста:

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

Ответ 3

Проверьте конфигурацию виртуального хоста. Для Ubuntu вы можете найти его на /etc/apache 2/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>

Ключевая строка Require all granted внутри <Directory>.

Надеюсь, что это поможет!

Ответ 4

Вы пытались изменить файл .htaccess, который предложил laravel, если по умолчанию он не работает? У меня была подобная проблема и она была изменена на

Options +FollowSymLinks
RewriteEngine On

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

и он создан:)

Ответ 5

Для тех, кто использует Mamp или 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.

Ответ 6

Это было решено для меня с файлом по умолчанию public/.htaccess по умолчанию Laravel, добавив дополнительную строку:

Файл /public/.htaccess остается следующим:

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

Ответ 7

Со мной возникла проблема, связанная с тем, что в папке public_html не было файла index.php. Однако, когда я набрал этот адрес: http://azxcvfj.org/public, он работал (этот адрес является всего лишь примером, который указывает на никуда). Это заставило меня подумать, и в конце концов я решил это, сделав следующее.

Я сделал файл .htaccess в корневой папке приложения (папка public_html) с этим содержимым:

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

И это сработало. С этим файлом вы в основном говорите серверу (Apache), что всякий раз, когда кто-то пытается получить доступ к общедоступной папке html (http://azxcvfj.org), кто-то, кто перенаправляется, перенаправляется на http://azxcvfj.org/public/index.php

Ответ 8

В вашем VirtualHost напишите DocumentRoot, чтобы он указывал на ваше приложение Laravel в ваших домашних каталогах. Кроме того, вы должны добавить каталог, показанный ниже, со своим собственным путем:

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

На втором этапе вы должны перейти в проект Laravel и выполнить следующую команду.

sudo chmod -R 777 storage bootstrap/cache

В конце перезапустите ваш apache2:

sudo service apache2 restart

Ответ 9

Просто добавьте файл .htaccess в свой корневой путь проекта со следующим кодом для перенаправления в общую папку:

.htaccess

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

Очень просто, но работайте на моем сервере.

С уважением!

Ответ 10

Для меня это было только потому, что у меня была папка в моем public_html, названная так же, как и этот маршрут!
поэтому, пожалуйста, проверьте, нет ли папки с адресом этого маршрута!
надеюсь, будет полезно

Ответ 11

Во-первых, обновите конфигурацию виртуального хоста;

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

Затем измените разрешение и право собственности на актив, как показано ниже.

$ sudo chgrp -R www-data /var/www/html/example-project
$ sudo chmod -R 775 /var/www/html/example-project

Ответ 12

Скорее всего, если бы все ответы выше не работали для вас, и вы используете проверку запроса, вы забыли поставить авторизацию в 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 */
    /*******************************************************/
  }

  /* ... */
}

Ответ 13

У меня была такая же проблема, и я создал файл .htaccess, чтобы исправить эту проблему еще несколькими улучшениями. Вы можете использовать его как есть, просто скачайте его из Github Gist и измените имя файла "public/index.php" на "public/app. php" и посмотреть, как это работает!:)

Ответ 14

Для меня это просто вызывало route() по именованному маршруту, который я не создал/не создал неправильно. Это вызвало страницу с недопустимыми ошибками.

Перезапуск веб-сервера допустил правильные действия! ошибка для отображения:

Маршрут [my-route-name] не определен.

Исправлена ошибка с именем маршрута ->name('my-route-name').

Это на Laravel 5.5 и с помощью wampserver.

Ответ 15

Это решение моей проблемы, добавив эту строку:

DirectoryIndex index.php

Ответ 16

У меня была проблема с версией URL-адреса, отличной от www - метод PUT не работал. Но при входе на сайт с www. - он отлично работает!

Ответ 17

У меня была эта ошибка, и я просто вставил http://127.0.0.1:8000/ прямо в строку url. вы получите ниже, когда вводите: php laravel serve

Я помещал localhost/http://127.0.0.1:8000/, чтобы получить указанную вами ошибку.

Ответ 18

В общедоступном /.htaccess редактировать в

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

          RewriteEngine On

          # Redirect Trailing Slashes If Not A Folder...
          RewriteCond %{REQUEST_FILENAME} !-d
          RewriteCond %{REQUEST_URI} (.+)/$
          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>

В корень проекта добавить файл

Procfile

Содержимое файла

web: vendor/bin/heroku-php-apache2 public/

Перезагрузить проект в Heroku

bash
heroku login
cd my-project/
git init
heroku git:remote -a my project
git add .
git commit -am "make it better"
git push heroku master
heroku open

Ответ 19

Проблема заключается в расположении файла индекса (index.php). Вы должны создать символическую ссылку в корне проекта на public/index.php с помощью команды "ln-s public/index.php index. PHP"

Ответ 20

Возможно, вы столкнулись с проблемой доступа к файлам. Проверьте файл htacces, изменилось ли оно со вчерашнего дня? Кроме того, если вы делали какие-либо "обновления для композитора" или "оптимизировать", попробуйте упорядочить свою папку проекта laravel для своего имени пользователя.

chown -R yourusername yourlaravelappfolder 

РЕДАКТИРОВАТЬ: проблема, возможно, связана с вашими локальными разрешениями на файл, касающимися Vagrant. Попробуйте

set the permissions to the Vagrantfile containing folder to 777