Laravel 上传到lnmp环境不能用 您了解pathinfo吗
环境 了解 不能 laravel LNMP 传到 pathinfo
2023-06-13 09:12:15 时间
在nginx下是不支持pathinfo的,但是apache支持pathinfo。 pathinfo是什么? 首先我们在nginx的html目录下新键1.php文件,打印$_SERVER
<?php
echo "<pre>";
print_r($_SERVER);
尝试在地址栏输入如下参数
结果返回404
同样的代码在apache下测试
没有报错 并且页面多了PATH_INFO的字段 值为 url地址后面的参数 a/b/c 这就是pathinfo 一些框架中他的地址栏格式为 index.php/Home/Index/goods/1....这种格式在apache中可以正常解析,但在nginx中是不支持的,也就是你的框架项目直接拿到nginx上是跑不起的。 解决办法如下
//基础配置
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /$DOCUMENT_ROOT$fastcgi_script_name;
include fastcgi_params;
}
//修改后的配置
location ~ \.php(.*)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /$DOCUMENT_ROOT$fastcgi_script_name;
fastcgi_param PATH_INFO $1;
include fastcgi_params;
}
通过正则反向引用将.php后面的参数传递给pathinfo 浏览器测试传入参数 1.php/a/b 页面生成PATH_INFO字段
此时解决Nginx不支持pathinfo的问题。
但有些框架他的地址栏格式是这样的 域名+a/b/c
,域名后面没有index.php 如dian.com/show/eic
这时候要使你的项目在nginx上运行就要通过url地址重写解决问题
location / {
root html/daikuan/public;
index index.php index.html ;
//添加url重写
if ( !-e $request_filename) {
rewrite (.*)$ /index.php/$1;
}
但是这种方式一直导致 500 Internal Server Error 不知道什么原因,不过在nginx中还可以通过try_files
解决上述问题
location / {
root html/daikuan/public;
index index.php index.html ;
//tryfile
try_files $uri /index.php?$uri;
}
相关文章
- pycharm 设置环境_pycharm 虚拟环境
- Nginx代理服务器环境快速搭建部署
- 【可视化爬虫】scrapinghub 可视化抓取 portia环境搭建全过程
- 基于vpp搭建ipsec环境
- JS逆向之补环境过瑞数详解
- Oracle环境通过SQL*PLUS本地登录时报错的解决过程
- Java基础-Eclipse环境搭建详解编程语言
- Linux 瘦客户机系统:实现小型环境的有效运行(linux瘦客户机系统)
- 如何在CentOS 8上安装和使用AIDE高级入侵检测环境
- 管理掌握 Linux 脚本环境管理技术(linux脚本环境)
- 深入了解Linux SSHD配置,打造更安全的远程连接环境(linuxsshd配置)
- 深入了解MySQL机构,轻松搭建稳定数据库环境!(mysql机构)
- Linux 中文安装:轻松实现本地化环境(linux安装中文语言)
- Linux环境下GB2312编码的使用(linuxgb2312)
- 快速了解如何在ASP环境下安装MySQL(asp 安装mysql)
- AIX环境下如何关闭MySQL服务(aix mysql关闭)
- 私人服务器构建私有Redis云环境(私人redis)
- 排查Redis哨兵环境的日志分析(查看redis哨兵日志)
- ert利用Oracle Uppert突破性改造IT环境(oracle upp)