有老哥遇到过 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
    }
5167 次点击
所在节点    问与答
35 条回复
dapengzhao
2019-05-20 16:13:37 +08:00
@ochatokori mime type 是跟 css 静态文件一类的资源有关系吧
dapengzhao
2019-05-20 16:17:31 +08:00
@sheeta 还是在下载 index.php
uTOmOuk3L6sb4MSI
2019-05-20 16:28:08 +08:00
https://nginxconfig.io/
站长好像发过这个,看你需要否
poisedflw
2019-05-20 16:29:09 +08:00
强烈怀疑你 nginx 有错误日志。
你先检查下 nginx 是否有错误日志(就是没重启成功)

然后单独测试下 fpm 是否 ok
lazyyz
2019-05-20 16:58:49 +08:00
直接下载 php 一般是 Nginx 没有配置正确,给你一段最简单的试试,sock 文件会自动生成的,下面的 7.3 改成你的 php 版本

server {
listen 80 default_server;

root /usr/local/nginx/html;
index index.html index.php;

server_name _;
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # With php-fpm (or other unix sockets):
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
}
}
lazyyz
2019-05-20 17:00:16 +08:00
@dapengzhao 127.0.0.1:9000 用的 php cgi 模式,socks 是 php-fpm
liwl
2019-05-20 17:26:10 +08:00
location ~ .*\.php(\/.*)*$
{
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params.conf;
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
}
dapengzhao
2019-05-20 18:05:39 +08:00
@liwl
server {
listen 8080;
server_name 114.116.109.253;
root /usr/local/nginx/html;

location ~ .*\.php(\/.*)*$
{
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params.conf;
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
}
}

还是不行,直接下载了
ddsfeng
2019-05-20 19:25:19 +08:00
@dapengzhao 好了, 不谢.
falcon05
2019-05-20 19:35:37 +08:00
估计是 mine-type 或者 Server name 的问题,压根没进入这个 Server,如果是 php-fpm 的问题会是 502,根本不会有下载。
zhanglintc
2019-05-20 20:55:26 +08:00
@ddsfeng #29 改了啥地方啊
Takamine
2019-05-20 22:03:53 +08:00
我记得我之前遇到的时候是把.php 文件没有配置解析的问题。
liangzi
2019-05-20 22:13:36 +08:00
卧槽还没弄好呢?
liangzi
2019-05-20 22:29:41 +08:00
### 原因
- 当 nginx 不配置支持 php 模块时,当你访问 php 文件时候,浏览器默认下载 php 文件,而不是执行 php

- 排查你的 php-XXX 之类的扩展 是不是有少安装了什么插件
- 配置 php-fpm.conf
openSUSE 搭建 wordpress 为例

` sudo cp /etc/php7/fpm/php-fpm.conf.default /etc/php7/fpm/php-fpm.conf`

`sudo cp /etc/php7/fpm/php-fpm.d/www.conf.default /etc/php7/fpm/php-fpm.d/wordpress.conf`


cat /etc/php7/fpm/php-fpm.conf
```
pid = run/php-fpm.pid
include=/etc/php7/fpm/php-fpm.d/*.conf
```

cat /etc/php7/fpm/php-fpm.d/wordpress.conf
```
user = 你的用户名
group = users
listen = 127.0.0.1:9000
pm = dynamic

```
nginx -t

sudo php-fpm -t
sudo php-fpm
sudo systemctl start nginx.service

### nginx
```
server {

listen 80;
root /这里改你的具体位置;
index index.php index.html index.htm;

server_name 你的主机名

client_max_body_size 100M;

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

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
``
dapengzhao
2019-05-21 09:27:11 +08:00
@ddsfeng 大哥🙏,能不能说下改了啥地方

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

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

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

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

© 2021 V2EX