繁体   English   中英

网络浏览器正在从我的网络服务器下载 index.php 而不是执行它

[英]web browser is downloading index.php from my web server instead of executing it

我正在设置一个可以运行 PHP 文件的 nginx Web 服务器,特别是对于 selfoss rss 查看器。 出于某种原因,当我访问我的网站时,它会下载 index.php 文件而不是在服务器上执行它。 我在树莓派 1B 上运行它。

是的,我确实重新启动了 nginx 并清除了我的网络浏览器缓存。 它没有解决任何问题。

这是我的 PHP 版本:

$ php -v
PHP 7.4.30 (cli) (built: Jul  7 2022 15:51:43) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.30, Copyright (c), by Zend Technologies

这是我的nginx配置:

server {
    server_name rss.getty.nz;
    root /var/www/rss.getty;
    access_log /var/www/rss.getty/rss.accesss.log;
    error_log /var/www/rss.getty/rss.error.log;

    index index.php;

    location / {
        try_files $uri  /public/$uri /index.php$is_args$args =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf ;
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock ;
    }

    location ~* \ (gif|jpg|png) {
        expires 30d;
    }
    location ~ ^/(favicons|thumbnails)/.*$ {
        try_files $uri /data/$uri;
    }
    location ~* ^/(data\/logs|data\/sqlite|config\.ini|\.ht) {
        deny all;
    }

    listen [::]:443 ssl; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/rss.getty.nz/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/rss.getty.nz/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    access_log /var/www/rss.getty/rss.accesss.log;
    error_log /var/www/rss.getty/rss.error.log;
}
server {
    if ($host = rss.getty.nz) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    listen 80;
    listen [::]:80;
    server_name rss.getty.nz;
    return 404; # managed by Certbot
}

以下是 /etc/nginx/snippets/fastcgi-php.conf 的内容:

# regex to split $uri to $fastcgi_script_name and $fastcgi_path
fastcgi_split_path_info ^(.+?\.php)(/.*)$;

# Check that the PHP script exists before passing it
try_files $fastcgi_script_name =404;

# Bypass the fact that try_files resets $fastcgi_path_info
# see: http://trac.nginx.org/nginx/ticket/321
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;

fastcgi_index index.php;
include fastcgi.conf;

感谢评论中的理查德史密斯,我有答案了。 这是本节中的 =404:

location / {
    try_files $uri  /public/$uri /index.php$is_args$args =404;
}

删除它会阻止 Web 浏览器下载。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM