解决Nginx下载php而不是执行php的问题

文章目录

解决Nginx下载php而不是执行php的问题

排查步骤

  1. 先检查有没有安装和运行了php-fpm:
systemctl status php-fpm
  1. 再检查php-fpm有没有侦听在9000端口:
netstat -tnlp | grep 9000
  1. 检查Nginx配置文件中有没有为.php文件指定了正确的php解析程序,比如:
location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
   }
  1. 修改Nginx配置后要重新加载新的配置:

    # 测试Nginx配置是否正确
    nginx -t
    
    # 重新加载Nginx配置
    nginx -s reload
    
    # 或重启Nginx
    systemctl restart nginx
    
  2. 换个浏览器或清除浏览器缓存后再测试。

    我就在这一步上被坑了很久:<

Nginx 配置文件例子

http://xdevops.cn 为例:

server {
    listen 80;
    listen [::]:80;

    root /var/www/html/xdevops.cn;

    index index.php;

    server_name xdevops.cn www.xdevops.cn;

    access_log /var/log/nginx/xdevops.cn.access.log;
    error_log /var/log/nginx/xdevops.cn.error.log;

    location ~ \.php$ {
        try_files $uri =404;
        #fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;

        #instruct nginx execute php7 files instead download them :D
        #fastcgi_pass unix:/var/run/php-fpm/www.sock;
        
        fastcgi_pass 127.0.0.1:9000;

        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
   }
}

参考文档

没有账号? 忘记密码?

社交账号快速登录