Как исправить ошибку 403 Доступ запрещен при попытке доступа к определенной странице? - PullRequest
0 голосов
/ 12 апреля 2019

Я работаю над проектом Laravel на ОС Windows 7 и получаю страницу 403 Доступ запрещен, говоря, что у вас нет разрешения на доступ к запрошенному каталогу.Отсутствует индексный документ или каталог защищен от чтения, когда я пытаюсь получить доступ к странице проекта / продукта.Когда я захожу на страницу проекта (домашнюю страницу) или страницу проекта / продуктов / создания, все работает нормально, и я получаю сообщение об ошибке только тогда, когда нахожусь в проекте / продуктах или когда я отправляю форму для загрузки продуктов.Я отредактировал разрешения для этой папки и файла, чтобы иметь полный контроль, а также попытался отредактировать httpd-vhosts.conf, как некоторые другие люди сделали с аналогичными проблемами и перезапустить apache, но ничего не получалось.Любая помощь приветствуется, и вот мой код:

index.blade.php:

@extends('layouts.app')

@section('content')

<div class="container">
    <div class="row">
        <div class="col-lg-12 margin-tb">
            <div class="pull-left">
                <h1>Products</h1>
            </div>
            <div class="pull-right">
                <a class="btn btn-success" href="{{ route('products.create') }}"> Upload Product</a>
            </div>
        </div>
    </div>

    <table class="table table-bordered">
        <tr>
            <thead>
                <th>ID</th>
                <th>Files</th>
                <th>Product Name</th>
                <th>Owner Of The Product</th>
            </thead>
        </tr>
        <tbody>
            @foreach ($products as $product)
            <tr>
                <td>{{ $product->id }}</td>
                <td>{{ $product->files }}</td>
                <td>{{ $product->name }}</td>
                <td>
                    @foreach ($product->users as $user)
                        {{ $user->name }}
                    @endforeach
                </td>
                <td>
                    <form action="{{ route('products.destroy', $product->id) }}" method="POST">
                        <a class="btn btn-info" href="{{ route('products.show', $product->id) }}">Show</a>
                        @csrf
                        @method('DELETE')
                        <button type="submit" class="btn btn-danger">Delete</button>
                    </form>
                </td>
            </tr>
            @endforeach
        </tbody>
    </table>

</div>

@endsection

ProductController.php:

<?php

namespace App\Http\Controllers;

use App\Product;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;

class ProductController extends Controller
{
    public function index()
    {
        $products = Product::with('users')->get();
        return view('products.index', compact('products'));
    }

    public function create()
    {
        return view('products.create');
    }

    public function store(Request $request)
    {
        DB::beginTransaction();
        try {
            if ($file = $request->file('files')) {
                $name = $file->getClientOriginalName();
                if ($file->move('products', $name)) {
                    $product = new Product();
                    $product->files = $name;
                    $product->save();
                    $product->users()->attach(Auth::id());
                }
            }
            DB::commit();
        } catch (\Exception $e) {
            DB::rollBack();
        }

        return redirect()->route('products.index');
    }

    public function show(Product $product)
    {
        return view('products.show', compact('product'));
    }

    public function destroy(Product $product)
    {
        $product->users()->detach();
        $product->delete();

        return redirect()->route('products.index');
    }
}

httpd-vhosts.conf:

<VirtualHost project.devel:80> 
DocumentRoot "C:\xampp\htdocs\project\public"
ServerAdmin project.devel
<Directory "C:\xampp\htdocs\project\public">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
</VirtualHost>

хосты:

localhost name resolution is handled within DNS itself.
#    127.0.0.1       localhost
#    ::1             localhost

127.0.0.1     localhost
127.0.0.1     project.devel
...