当前位置: 首页 > 知识库问答 >
问题:

nginx提供一些(但不是全部)php文件作为下载

赵雪峰
2023-03-14

我在运行nginx的Ubuntu服务器上安装WordPress。安装进行得相当顺利(以下安装LEMP和安装WordPress教程-带我通过mysql,php5-fpm和wordpress安装),似乎大部分工作。我可以查看Wordpress管理页面,创建博客帖子,甚至查看这些帖子。但是当我试图访问我博客的主页(例如index.php)时,nginx将文件作为下载而不是执行。我已经尝试了Nginx service. php文件中的配置作为下载,而不是执行它们,但无济于事。

这是我的虚拟服务器文件:

server {
    listen 80;
    server_name my.domain.com;

    root /my/wordpress/home/dir;
    index index.php index.html index.htm;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

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

        rewrite ^/([_0-9a-zA-Z-]+/)?wp-admin$ /$1wp-admin/ redirect;
        if (-e $request_filename) {
            rewrite ^/([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) /$2 break;
        }
        rewrite ^/([_0-9a-zA-Z-]+/)?(.*\.php)$ /$2 break;
        rewrite ^(.*)$ /index.php break;
    }
}

nginx.conf:

user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
    worker_connections 768;
}

http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

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

    gzip on;
    gzip_disable "msie6";

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

为了清晰起见,我删除了注释行sudo nginx-t未报告任何错误。

如何让index.php执行,而不是作为下载服务?谢谢你的帮助。

编辑:看起来这是一个浏览器缓存问题。我试图删除过去24小时的缓存数据,但没有改变任何事情。删除所有内容后,它现在可以正常加载而不是下载。它也可以在其他浏览器/计算机上加载。

共有1个答案

卓瀚
2023-03-14

要在Nginx后面运行Wordpress,这对我很有用:

    location / {
            # try_files $uri $uri/ =404;
            try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    location /wp-content/updraft {
      deny all;
    }

    error_page 404 /404.html;

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
            root /usr/share/nginx/html;
    }

    location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
    }

我还建议查看Wordpress Nginx项目中的示例文件。特别是,您可能还对全局/限制感兴趣。conf文件,这在一定程度上加强了您的安装。如果您在同一台服务器上有多个Wordpress站点,它们都可以共享这些“全局”配置文件,从而使您的Wordpress管理员生活更加轻松。

 类似资料:
  • 我从1.8升级了nginx。0到1.9。今天7点,为了让一个网站重新工作,他不得不换几行。现在它可以在ssl(443)上工作,但不能在http(80)上工作。我必须将fastcgi_参数更改为fastcgi。形态。 当我通过Cloud flare尝试一个网站时,它说与我的服务器没有连接。直接连接我得到一个下载的文件。看起来像一个压缩文件,在浏览器上没有得到解压缩。这是标题。 浏览器或服务器上没有错

  • 问题内容: 我正在将站点安装在Droplet中(数字海洋)。我在使用PHP正确安装NGINX时遇到问题,但是当我尝试运行一些.php文件正在下载…例如,它正在工作,但是…如果我进入主目录,它将下载我的index.php:/ 任何的想法? 我的/ etc / nginx / sites-available / default …评论其他“位置”(#) 问题答案: 尝试这个: 编辑 取消注释两个侦听行

  • 我正在一个水滴(数字海洋)中安装一个网站。我对正确安装带有PHP的NGINX有一个问题。我做了一个辅导https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04但是当我试着跑的时候。php文件只是下载而已。。。例如<代码>http:/

  • 我一直在处理将一个站点从Apache迁移到Nginx的过程,我快要失去理智了。虚拟主机不想提供静态资源(css、js等),我似乎不知道为什么。服务器块看起来像这样: 我错过了什么?我知道这是因为我对Nginx缺乏经验,但任何建议都将不胜感激。 谢谢 更新 这似乎与我以前遇到麻烦的化名有关。如果我将我的文档根指向别名位置(),并尝试呈现没有别名的静态内容,它会呈现良好的效果。一旦我在网址中输入别名.

  • 我有以下文件夹结构为我的应用程序 这是我的nginx.conf 这就是我一直犯的错误 页面显示正确,我只是可以在子文件夹中到达api资源。你能帮我找出我做错了什么吗?如果您需要任何额外的信息,请让我知道,我会提供 非常感谢。

  • 我最近在我的机器上安装了nginx和php 7.0.16,但是由于某种原因,nginx下载了php文件,而不是执行它们。我已经花了几天时间在网上实施了所有可用的解决方案,但都是徒劳的。 我的nginx。配置文件是: conf.d文件夹中没有文件,启用的站点只有如下所示的默认文件 有人能告诉我,有什么问题吗?