nginx/php-fpm 访问php文件直接下载而不运行

遇到这种问题,首先确认你web服务器配置中的.PHP是不是被指定给FastCGI server处理:

location ~ .php$ {
    fastcgi_pass 127.0.0.1:9000;
}

如已配置,那么可能是由于fastcgi_script_name访问脚本路径不正确引起的。

尤其是带有子目录的情况,比如对于Yii框架而言,路径通常是project/web

那么如果在URL中访问 /project/index.php,那么nginx配置中的SCRIPT_NAME会是全路径:project/index.php

如果你配置中的代码如下:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

那么实际访问的文件就是/var/site_root/project/web/project/index.php,这显然不是我们想要的结果,我们想访问的是/project/web/index.php。

这些错误可以通过查看php-fpm.log(错误日志)来跟踪。

解决方法是修改相应的路径配置。

备注:多个站点使用子目录配置可参考:

https://rtcamp.com/wordpress-nginx/tutorials/multisite/subdirectories/in-a-subdirectory/

时间: 2024-10-19 23:08:16

nginx/php-fpm 访问php文件直接下载而不运行的相关文章

Nginx配置指定媒体类型文件强制下载

由于业务需要,在点击显示链接(如www.xxx.com/2015-01-15/xxx.png)显示媒体资源(如图片.视频.音频.文档),而在点击下载链接(如www.xxx.com/2015-01-15/xxx.png?download=true)请求静态资源时,强制下载而不是在浏览器中直接显示.经过多方查找各种方案,可以在nginx中设置强制下载,如下: 1 location ~ .*\.(gif|jpg|jpeg|bmp|png|mp3|wma|mp4|swf|txt)$ 2 { 3 if (

Nginx访问PHP文件的File not found错误处理,两种情况

Nginx访问PHP文件的File not found错误处理,两种情况 这个错误很常见,原有有下面两种几种 1. php-fpm找不到SCRIPT_FILENAME里执行的php文件 2. php-fpm不能访问所执行的php,也就是权限问题 第一种情况 可以在你的location php 里面添加当文件不存在时返回404而不是交给php-fpm进行处理 location ~ \.php${ ... #文件不存在转404 try_files $uri = 404; ...} 然后,在你的配置文

nginx之访问静态文件

如何配置nginx,访问服务器上的静态文件? 1.在目录/data/interface_test下创建静态文件queryAppData.json,内容如下: 如何访问该文件呢? 2.修改/usr/local/nginx/conf/nginx.conf配置文件,添加如下内容(按目录匹配): 如果请求的URL的路径中包含interface_test,则匹配到/data/目录,访问该目录下静态文件.重启nginx,请求接口地址http://10.222.138.245/interface_test/q

Nginx访问日志、 Nginx日志切割、静态文件不记录日志和过期时间

1.Nginx访问日志 配制访问日志:默认定义格式: log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]' ' $host "$request_uri" $status' ' "$http_referer" "$http_user_agent"';  (这是定义日志引用时的名字:combined_realip,后面的内容,就是需要被引用的)可以理

Linux下使用Nginx代理访问json文件包404错误

在网上看了很多,都说是IIS的问题,关键是使用servlet就可以正常访问,使用Nginx就不行,最后发现是其他问题,解决方案如下: 1.确认配置的路径是否正确,Nginx代理的路径和你访问的路径. 2.在Nginx的nginx.conf中找到对应的server,然后找到访问静态文件的location,加入json,如下: 希望可以帮到你! 原文地址:https://www.cnblogs.com/tygtyg/p/9304131.html

nginx日志不记录静态文件访问和缓存

nginx访问日志nginx和apache的访问日志一样可以记录的指定信息,如记录服务器时间,访问的客户端ip.访问的url和访问状态码等信息,这些信息会规律的记录到访问日志中主配置文件中定义的日志格式,记录的格式参数解释如下 $remote_addr ? ? ? ? ? ? ? ? ? 客户端访问IP(公网IP) $http_x_forwarded_for ? ? ? ? ? 记录代理服务器的IP $time_local ? ? ? ? ? ? ? ? ? ? 日志中服务器本地时间 $host

nginx环境跑tp5只能访问入口文件访问不了方法

新搭一个nginx服务器,准备跑tp5,代码放入后发现只能访问入口文件访问不了方法,报404 百度搜了一下说nginx配置没有支持pathinfo,改nginx文件: 去掉美元符$,然后里面加两句 然后发现可以访问方法了,但需要带index.php,在这里加上这三行 原文地址:https://www.cnblogs.com/weilovehua/p/9941682.html

Nginx、Apache解析php文件的区别

一.Apache是如何解析php文件的 我们常说的lamp架构是linux.apache.mysql.php,我们知道任何架构或者网站离不开数据库的支持,那么php和apache又是如何协同工作的呢? php是apache的一个外挂程序,必须依靠web服务器才可以运行.当客户端浏览器触发事件--->php程序提交到apache服务器---->apache服务器根据php程序的特点判断是php程序,并从内存或者硬盘中提取访问所需要的应用程序,将其提交给php引擎程序--->php引擎程序解

mac上nginx静态页面访问403

第一天配置好的nginx可以正常的访问静态页面,第二天通过网络云盘下载的index.html文件之后,再次访问出现了403forbidden的问题. 查看文件的权限: [email protected] 1 hu staff 6351 4 12 21:10 bluePlan.js [email protected] 1 hu staff 113 4 12 21:10 bluePlan.less [email protected] 1 hu staff 1146 4 12 21:19 index.