Laravel:403当试图访问/ public中的任何文件夹/文件时

时间:2016-01-05 00:20:48

标签: http laravel nginx laravel-4 homestead

我得到了Laravel的4.2宅基地服务器(nginx)。 所以,如果我在任何视图中写这样的东西:

<script src="media/js/application.js"></script>
<link rel="icon" href="media/img/branding/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="media/css/markdown.css">

它包含所有文件,但下面的代码不起作用( 403错误):

<div style="background-image: url(media/img/image.jpg)"></div>

另外,如果我尝试直接访问/ public中的某个文件夹/文件,它也会返回403。为什么?那是我的nginx网站配置(事实是这是一个自动生成的宅基地配置):

vagrant@homestead:~/work/Timetable$ cat /etc/nginx/sites-enabled/timetable.dev 
server {
    listen 80;
    listen 443 ssl;
    server_name timetable.dev;
    root "/home/vagrant/work/Timetable/public";

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log off;
    error_log  /var/log/nginx/timetable.dev-error.log error;

    sendfile off;

    client_max_body_size 100m;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
    }

    location ~ /\.ht {
        deny all;
    }

    ssl_certificate     /etc/nginx/ssl/timetable.dev.crt;
    ssl_certificate_key /etc/nginx/ssl/timetable.dev.key;
}

3 个答案:

答案 0 :(得分:0)

你提出了两个问题,第一个问题:

您的媒体文件夹应位于资源文件夹下,然后包含它:

asset('media/img/image.jpg');

对于第二个问题,它已存在于此网站上:Laravel Homestead: 403 forbidden on nginx

答案 1 :(得分:0)

<div style="background-image: url(/media/img/image.jpg)"></div>

在媒体之前添加额外的/

答案 2 :(得分:0)

我不熟悉nginx,但你是否100%确定文件夹权限是他们应该的? 403转换为禁止意味着在您的配置或权限中的某个位置,它禁止访问。

如果您尝试chmod -R 777 public怎么办?如果你这样做会有用吗?