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

将PHP文件作为下载,而不是执行它们

申炳
2023-03-14

我最近在我的机器上安装了nginx和php 7.0.16,但是由于某种原因,nginx下载了php文件,而不是执行它们。我已经花了几天时间在网上实施了所有可用的解决方案,但都是徒劳的。

我的nginx。配置文件是:

worker_processes 4;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.fedora.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    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;

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

conf.d文件夹中没有文件,启用的站点只有如下所示的默认文件

server {
    listen 80;
    server_name infrastructure;
    root /home/infra/index;
    index index.php index.html index.htm;
    #return 301 https://$server_name$request_uri;

    location / {
        try_files $uri $uri/ = 404;
    }

    # pass the PHP scripts to FastCGI server listening on the php-fpm socket
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

        # With php5-cgi alone:
        #fastcgi_pass 127.0.0.1:9000;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    error_page 500 502 503 504 /500.html;
    client_max_body_size 4G;
    keepalive_timeout 10;
}

有人能告诉我,有什么问题吗?

共有3个答案

董昕
2023-03-14

在使用php fpm时,我在/etc/nginx/sites available/default中取消了对这个bloc的注释

 location ~ \.php$ {
            include snippets/fastcgi-php.conf;
    #
    #       # With php-fpm (or other unix sockets):
            fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    #       # With php-cgi (or other tcp sockets):
            #fastcgi_pass 127.0.0.1:9000;
    }
田翰林
2023-03-14

Nginx是Ubuntu 16.04的一个软件包,我们可以安装它。

apt-get -y install nginx

之后启动nginx:

service nginx start

然后打开localhost页面,看看会出现什么。

安装PHP 7

我们可以通过PHP-FPM(PHP-FPM(FastCGI Process Manager)使PHP在nginx中工作(PHP-FPM是另一种PHP FastCGI实现,具有一些对任何规模的站点都有用的附加功能,尤其是更繁忙的站点),我们安装如下:

apt-get -y install php7.0-fpm

PHP-FPM是一个守护进程(使用init脚本php7.0-FPM),在socket/run/PHP/php7上运行FastCGI服务器。0-fpm。短袜

nginx配置位于/etc/nginx/nginx中。我们现在打开的conf:

nano /etc/nginx/nginx.conf

配置很容易理解(您可以在此处了解更多信息:http://wiki.nginx.org/NginxFullExample在这里:http://wiki.nginx.org/NginxFullExample2)

首先(这是可选的)将keepalive_timeout调整到合理的值:

[...]
    keepalive_timeout   2;
[...]

虚拟主机是在服务器{}容器中定义的。默认vhost在文件/etc/nginx/sites available/default中定义-我们将其修改如下:

nano /etc/nginx/sites-available/default

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

 # SSL configuration
 #
 # listen 443 ssl default_server;
 # listen [::]:443 ssl default_server;
 #
 # Note: You should disable gzip for SSL traffic.
 # See: https://bugs.debian.org/773332
 #
 # Read up on ssl_ciphers to ensure a secure configuration.
 # See: https://bugs.debian.org/765782
 #
 # Self signed certs generated by the ssl-cert package
 # Don't use them in a production server!
 #
 # include snippets/snakeoil.conf;

 root /var/www/html;

 # Add index.php to the list if you are using PHP
 index index.html index.htm index.nginx-debian.html;

 server_name _;

 location / {
 # First attempt to serve request as file, then
 # as directory, then fall back to displaying a 404.
 try_files $uri $uri/ =404;
 }

 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
 #
 location ~ \.php$ {
 include snippets/fastcgi-php.conf;

 # With php7.0-cgi alone:
 # fastcgi_pass 127.0.0.1:9000;
 # With php7.0-fpm:
 fastcgi_pass unix:/run/php/php7.0-fpm.sock;
 }

 # deny access to .htaccess files, if Apache's document root
 # concurs with nginx's one
 #
 location ~ /\.ht {
  deny all;
 }
}
[...]

服务器名称;使其成为默认的catchall vhost(当然,您也可以在此处指定一个主机名,如www.example.com)。

root/var/www/html;表示文档根目录是/var/www/html。

PHP的重要部分是位置~。php${}节。取消注释以启用它。

现在保存文件并重新加载nginx:

service nginx reload

接下来打开/etc/php/7.0/fpm/php。我。。。

nano /etc/php/7.0/fpm/php.ini

...并设置cgi.fix_pathinfo=0:

[...]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=0
[...]

重新加载PHP-FPM:

service php7.0-fpm reload

现在在文档root/var/www/html中创建以下PHP文件:

nano /var/www/html/info.php

<?php
phpinfo();
?>

现在我们在浏览器中调用该文件(例如。http://localhost/info.php):

丰飞龙
2023-03-14

找到了解决办法。问题出在nginx中。conf文件。

替换以下行:

default_type        application/octet-stream;

与:

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

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

  • 我用php 7.4更新了我的服务器,但是它造成了一些问题我的网站无法再次上线,问题是在重新安装httpd或安装httpd devel后开始的。我不确定我是否有bitrix管理我的网站,但是应用程序也托管在服务器上,并且在我尝试访问它时没有部署,它会下载php文件,我至少需要这样才能重新开始 环境: Centos 7 PHP7.4 httpd-v:Server版本:Apache/2.4。6(世纪)

  • 问题 我今天尝试从PHP7.0升级到7.2,结果服务器上的网站通过浏览器下载,而不是像正常的那样执行。 我的问题 有人能给我一些如何调试的例子吗?还有关于可能发生的事情的其他见解吗? 我的理论 从技术上说,我不知道是什么导致了这种情况,但我的经验告诉我,这是一行,在一个文件中,来自NGinx,需要编辑。 我试过的 我发现这个问题在这里经常被报道。但是解决方案缺少关键信息,例如文件路径,或者它们引用

  • 我最近通过以下博客在Ubuntu 14.04上配置了php7http://www.zimuel.it/install-php-7我根据博客成功安装了它。但是当尝试运行php文件(/var/www/test.php)时,它会被下载而不是执行。我不知道我错过了什么配置。当我在浏览器中输入localhost时,它的响应是“Itworks”。

  • 问题内容: 操作系统和服务器信息: CentOS 6.4(最终版) 阿帕奇2.2.15 PHP 5.5.1 我以前安装了php 5.3.x,但决定升级。我首先卸载了php 5.3.x,然后安装了php 5.5.1,但是在安装完成后apache并没有解析php文件,只是下载了它们。我在这里检查了stackoverflow中的类似问题,但到目前为止,它们都没有帮助我。 作为记录,我在httpd.con