![](/img/trans.png)
[英]My index.php is downloading as a file instead of executing when i run it
[英]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.