Laravel 5.5在Nginx上的路由配置位置及WinNMP环境异常求助
嘿,刚接触Nginx和Laravel的话遇到这种问题太正常了,我来帮你一步步排查解决~
你提到访问http://localhost/mylaraveltest/public/出现Laravel错误页但自身日志没记录,Nginx有警告,结合Windows环境的特性,大概率是权限配置或Nginx站点规则出了问题,咱们一步步来:
1. 先搞定Laravel的目录写入权限
Windows虽然没有Linux那样的严格权限体系,但Laravel的storage和bootstrap/cache目录必须要有写入权限才能正常运行:
- 找到你的Laravel项目根目录,右键点击
storage文件夹 → 属性 → 安全选项卡 - 确保当前登录的Windows用户(或者
IIS_IUSRS、Everyone这类组)拥有读取和写入权限 - 同样的操作应用到
bootstrap/cache文件夹,记得勾选“将权限应用到子文件夹和文件”,避免只改了父目录权限
2. 修正Nginx的站点配置
WinNMP的Nginx配置一般在WinNMP/conf/nginx/sites目录下,你需要确保配置正确指向Laravel的public目录,并且配置了URL重写(Laravel必须靠这个去掉index.php才能正常路由):
- 打开你的站点配置文件(比如
localhost.conf),修改root和location部分,注意Windows路径要用正斜杠或者双反斜杠:
server { listen 80; server_name localhost; # 替换成你Laravel项目public目录的绝对路径 root "C:/WinNMP/www/mylaraveltest/public"; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; # WinNMP的PHP-FPM默认端口是9000,可确认下 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
- 修改后保存,在WinNMP面板里点击Nginx的Restart按钮重启服务
3. 查看完整的Nginx警告信息
你只贴了警告开头,完整内容才是关键——比如如果是open() ".../favicon.ico" failed这种是小问题,但如果是permission denied相关的,那还是权限没设置到位:
- 打开WinNMP的Nginx日志目录(一般是
WinNMP/logs/nginx),找到对应的警告日志,把完整内容提取出来,方便进一步定位
4. 清除Laravel缓存(死马当活马医系列)
有时候缓存会导致莫名其妙的问题,打开命令行(Win+R输入cmd),进入你的Laravel项目根目录,执行这几条命令:
php artisan cache:clear php artisan config:clear php artisan view:clear
5. 确认PHP版本和扩展兼容性
Laravel 5.5要求PHP版本至少是7.0.0,你可以建一个phpinfo.php文件(内容是<?php phpinfo(); ?>)放在WinNMP的www目录下,访问http://localhost/phpinfo.php确认:
- PHP版本符合要求
- 开启了
mbstring、openssl、PDO这些Laravel必需的扩展
如果做完这些还是有问题,把完整的Nginx警告信息贴出来,我再帮你细化排查~
内容的提问来源于stack exchange,提问作者cytsunny

