有老哥遇到过 nginx/ PHP -fpm 访问 PHP 文件直接下载而不运行的情况吗?

2019-05-20 14:18:24 +08:00
 dapengzhao

server { listen 8080; server_name localhost; root /usr/local/nginx/html;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location ~ \.php$ {
    root           /usr/local/nginx/html;
    fastcgi_pass   127.0.0.0:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
    }

    location / {
        root  /usr/local/nginx/html
        index index.php
    }
4950 次点击
所在节点    问与答
35 条回复
zhanglintc
2019-05-20 14:25:51 +08:00
fastcgi_pass 可能需要改成这个样子:
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;

那个 .sock 文件的具体地址你可能需要根据你自己的版本稍作修改.
lazyyz
2019-05-20 14:39:08 +08:00
1 楼正解
dapengzhao
2019-05-20 15:03:09 +08:00
@zhanglintc
[root@ecs-68ac ~]# find / -name '*sock'
/usr/sbin/mksock

我系统下没有.sock 文件
在 www.config 中 listion 监听的就是 127.0.0.1:9000
dapengzhao
2019-05-20 15:03:34 +08:00
@lazyyz
[root@ecs-68ac ~]# find / -name '*sock'
/usr/sbin/mksock

我系统下没有.sock 文件
在 www.config 中 listion 监听的就是 127.0.0.1:9000
sheeta
2019-05-20 15:05:18 +08:00
@dapengzhao 你配置文件中是 127.0.0.0:9000
poisedflw
2019-05-20 15:14:40 +08:00
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

重启 nginx、重启 fpm。清浏览器缓存
dapengzhao
2019-05-20 15:15:05 +08:00
@sheeta
server {
listen 8080;
server_name localhost;
root /usr/local/nginx/html;

#charset koi8-r;

#access_log logs/host.access.log main;

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 / {
root /usr/local/nginx/html
index index.php
}


location ~ \.php$ 里面的 root 我用 /usr/local/nginx/html 和 html 都试过结果还是下载。。。。。
dapengzhao
2019-05-20 15:15:50 +08:00
@poisedflw 重启了 nginx 没有重启 fpm 我再试一下
dapengzhao
2019-05-20 15:27:29 +08:00
@poisedflw
按照你上面配置
重启 nginx、重启 fpm。清浏览器缓存
结果还是下载。。。。。。。。
frozenway
2019-05-20 15:31:56 +08:00
估计是 SCRIPT_FILENAME 没写对,再或者是 9000 端口没有开启
dapengzhao
2019-05-20 15:37:07 +08:00
@frozenway SCRIPT_FILENAME 没写对是啥意思?
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 18157/php-fpm
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 18180/nginx
keepeye
2019-05-20 15:39:01 +08:00
location ~ \.php$ {
return 403;
}

先看看有没有走到这个块里面
dapengzhao
2019-05-20 15:44:22 +08:00
@keepeye 好像没有,还是直接去下载了
dapengzhao
2019-05-20 15:49:12 +08:00
@keepeye
worker_processes 1;
events {
worker_connections 1024;
}

http {
include mime.types;
sendfile on;
keepalive_timeout 65;

server {
listen 8080;
server_name 114.116.109.253;
root /usr/local/nginx/html;

#location ~ \.php$ {
#try_files $uri =404;
#fastcgi_split_path_info ^(.+\.php)(/.+)$;
#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$ {
return 403;
}

location / {
root /usr/local/nginx/html
index index.php
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
LittleLease
2019-05-20 16:06:01 +08:00
执行 ps -ef | grep php 看看你的 php-fpm 进程有没有
liangzi
2019-05-20 16:07:40 +08:00
ng 不支持 PHP 的配置了 先保证 php-fpm 能运行起来再改 ng
dapengzhao
2019-05-20 16:07:50 +08:00
@LittleLease 有,现在问题是 nginx 解析完第一个 location 之后,不匹配下面的 location 了
dapengzhao
2019-05-20 16:08:33 +08:00
@liangzi
root 18157 1 0 15:24 ? 00:00:00 php-fpm: master process (/usr/local/php7/etc/php-fpm.conf)
www-data 18158 18157 0 15:24 ? 00:00:00 php-fpm: pool www
www-data 18159 18157 0 15:24 ? 00:00:00 php-fpm: pool www
www-data 18160 18157 0 15:24 ? 00:00:00 php-fpm: pool www
www-data 18161 18157 0 15:24 ? 00:00:00 php-fpm: pool www
www-data 18162 18157 0 15:24 ? 00:00:00 php-fpm: pool www
root 18259 17754 0 16:06 pts/0 00:00:00 grep php
ochatokori
2019-05-20 16:11:20 +08:00
直接下载文件我感觉是 nginx 的 mime type 出问题了
sheeta
2019-05-20 16:12:45 +08:00
location / {
root /usr/local/nginx/html
index index.php

location ~ \.php$ {
root /usr/local/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}



@dapengzhao 试试这样

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/565829

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX