0

我在 Windows 8 上设置新的本地主机时碰壁了。设置是用 laragon (3.0.5) 完成的,包括:

  • php 7.1.5
  • 拉拉维尔 5.4.24
  • nginx 1.12.0

nginx的配置文件是

server {
    listen 8080;
    server_name new_project.dev *.new_project.dev;
    root "C:/lar/laragon/www/new_project/dir1/";

    index index.html index.htm index.php;

   location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass php_upstream;      
        #fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }


    charset utf-8;

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }
    location ~ /\.ht {
        deny all;
    }
}

在 routes/web.php 我添加了以下路由

Route::get('/foo', function () {
    return 'Everything is awesome!';
});

我希望去http://new_project.dev:8080/dir1/public/foo看到字符串“一切都很棒!”,而不是我从 nginx 得到一个 404。

绝对任何帮助将不胜感激。

---- 更新 1 ----

再次在 routes/web.php 中有以下路线

Route::get('/', function () {
    return 'You are on the home page.';
});

当我去http://new_project.dev:8080/dir1/public/我得到一个 200 和预期的字符串。

4

3 回答 3

2

你正在使用 Laragon 的力量,但你用错误的设置和错误的 url 破坏了它。

您的设置必须是这样的:(注意public/

 root "C:/lar/laragon/www/new_project/dir1/public/";

现在,你的生活更轻松了——这个网址应该可以工作:

http://new_project.dev:8080/foo

于 2017-06-09T15:33:12.250 回答
0

使用您当前的配置,我认为这可以正常工作。我更新了 try_files index.php 位置

server {
    listen 8080;
    server_name new_project.dev *.new_project.dev;
    root "C:/lar/laragon/www/new_project/dir1/";

    index index.html index.htm index.php;

   location / {
        try_files $uri $uri/ /public/index.php$is_args$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass php_upstream;      
        #fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }


    charset utf-8;

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }
    location ~ /\.ht {
        deny all;
    }
}

尽管我不确定您的配置,但我建议您将项目根目录设置为公用文件夹,而不必执行 /public。然后,您可以将上面的 try_files 保留原样。

Laravel Homestead 也是设置开发环境的绝佳选择:https ://laravel.com/docs/5.4/homestead

于 2017-06-09T15:00:25.330 回答
0

new_project/dir1/ 是您root指令的一部分,它不能在请求中,因为所有文件和脚本搜索都是相对于它进行的。正确的请求是http://new_project.dev:8080/public/foo

于 2017-06-09T13:24:29.143 回答