Nginx PHP页面下载而不是显示

This has been a struggle for the past two days. I've done a lot of searching, couldn't find anything to fix it.

Here's my nginx.conf:

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

    events {
            worker_connections 768;
            # multi_accept on;
    }

    http {

            ##
            # Basic Settings
            ##

            sendfile on;
            tcp_nopush on;
            tcp_nodelay on;
            keepalive_timeout 65;
            types_hash_max_size 2048;
            # server_tokens off;

            # server_names_hash_bucket_size 64;
            # server_name_in_redirect off;

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

            ##
            # Logging Settings
            ##

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

            ##
            # Gzip Settings
            ##

            gzip on;
            gzip_disable "msie6";

            # gzip_vary on;
            # gzip_proxied any;
            # gzip_comp_level 6;
            # gzip_buffers 16 8k;
            # gzip_http_version 1.1;
            # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

            ##
            # Virtual Host Configs
            ##

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

Here's my default file in /etc/nginx/sites-enabled:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html/;
    index index.php index.html index.htm;

    server_name [redacted server IP];

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

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

    location ~ /admin/ {
        auth_basic "Restricted";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }

    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;
    }


}

The page is stored in /usr/share/nginx/html/admin/index.php -- it prompts for the username/password (which works fine), but as soon as I login, it downloads instead of showing the php webpage.

If I put the 'location ~ /admin/' block after the 'location ~ .php$' block, it works, but doesn't authenticate.

There are scripts I wrote in another folder that work fine when called 'in the folder /usr/share/nginx/html/api/XXX.php' (which inserts stuff into the MySQL database), but it just returns JSON stuff.

You are awesome for helping me out, I really do appreciate it.

duanjiong5023
duanjiong5023 我试过了,没有运气。我将更改帖子中的代码以显示
接近 6 年之前 回复
dongliang_bj2016
dongliang_bj2016 取消注释1行,它将起作用。
接近 6 年之前 回复

2个回答



您正在评论 php5-fpm </ code> sock,从以下行删除评论:</ p>

  fastcgi_pass unix:/var/run/php5-fpm.sock; 
</ code> </ pre>

更改管理路径配置以使用php5 -fpm sock:</ p>

  location~ /admin/.+.php$ {
auth_basic“Restricted”;
auth_basic_user_file /etc/nginx/.htpasswd;
fastcgi_split_path_info ^(。+ \ .php)(/。+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
包括fastcgi_params;
fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;
fastcgi_index index .php;
}
</ code> </ pre>

或者在〜\ .php $ {} </ code>规则之后移动管理配置路径
(均为 为我工作)</ p>

确保php5-fpm服务正在运行并且您已重新启动nginx </ p>

  sudo service php5-fpm restart  &安培;&安培;  sudo service nginx restart 
</ code> </ pre>
</ div>

展开原文

原文

You are commenting the php5-fpm sock, delete the comment from the following line:

fastcgi_pass unix:/var/run/php5-fpm.sock;

Change your admin path configuration to use the php5-fpm sock:

location ~ /admin/.+\.php$ {
  auth_basic "Restricted";
  auth_basic_user_file /etc/nginx/.htpasswd;
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  fastcgi_pass unix:/var/run/php5-fpm.sock;
  include fastcgi_params;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  fastcgi_index index.php;
 }

OR move your admin configuration path AFTER the ~\.php$ {} rule (both worked for me)

make sure the php5-fpm service is running and you've restarted nginx

sudo service php5-fpm restart && sudo service nginx restart

donglinli2027
donglinli2027 那是不需要的。 我很高兴它的工作:)
接近 6 年之前 回复
du77887
du77887 有用。 哇。 只是。 哇。 你= da man。 你有BTC地址吗?
接近 6 年之前 回复
dongyang0005
dongyang0005 我的答案已被编辑。 试试吧。
接近 6 年之前 回复
dongpan8928
dongpan8928 不幸的是,这是一个远程服务器,我正在进行中。我有一个index.php文件,其中包含一堆代码,以及同一目录中的'phpinfo.php'文件,所以我可以统治 通过'phpinfo.php'(只有<?php phpinfo()?>)测试'index.php'代码出错了
接近 6 年之前 回复
doumei3828
doumei3828 还要确保你的php文件名是index.php
接近 6 年之前 回复
dtwzwmv87399
dtwzwmv87399 到目前为止,nginx配置配置良好,您如何访问本地环境? 尝试设置虚拟主机编辑主机文件sudo nano / etc / hosts在主机文件127.0.0.1 local.test.com中添加一行。 更改server_name [编辑服务器IP]; 到server_name local.test.com ;; 重启你的nginx服务sudo服务nginx restart。 并尝试使用此url:local.test.com访问您的网站。 让我知道它是否有效。
接近 6 年之前 回复
douyueju2912
douyueju2912 (感谢你帮助到目前为止,真的)我访问该页面并看到“[我的IP] - [我的htaccess用户名] [03 / Dec / 2014:21:27:29 +0000]”GET / admin / phpinfo。 php HTTP / 1.1“200 22” - “”Mozilla / 5.0(X11; Linux x86_64)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 39.0.2171.71 Safari / 537.36“
接近 6 年之前 回复
douhaoqiao9304
douhaoqiao9304 access.log怎么样? 那里有什么吗?
接近 6 年之前 回复
douxiduan8344
douxiduan8344 我打开错误日志,访问页面(下载),然后再次运行错误日志,发现没有添加任何内容。 我为访问日志做了同样的事情,看起来很好(我现在只有一个页面,只有<?php phpinfo()?> - 排除php代码的任何问题)
接近 6 年之前 回复
dtsc1684
dtsc1684 你在access.log / error.log中遇到任何错误吗? tail /var/log/nginx/error.log || tail /var/log/nginx/access.log
接近 6 年之前 回复
donkey199024
donkey199024 没有运气,我没有评论那条线,保存并运行你的命令(得到回应:php5-fpm停止/等待php5-fpm启动/运行,进程20506 *重新启动nginx nginx)你是什么意思'确保 该文件存在于此路径中?
接近 6 年之前 回复



尝试将默认PHP块添加到conf。</ p>

  location~ \。  php $ {
fastcgi_split_path_info ^(。+?\ .php)(/。*)$;
if(!-f $ document_root $ fastcgi_script_name){
return 404;
}

fastcgi_pass 127.0。 0.1:9000;
fastcgi_index index.php;
包括fastcgi_params;
}
</ code> </ pre>

如果没有此块,预期的行为是显示文件。 您需要运行并配置PHP FPM才能使其正常工作。 有关说明,请访问 http://wiki.nginx.org/PHPFcgiExample </ p>
</ DIV>

展开原文

原文

Try adding the default PHP block into your conf.

location ~ \.php$ {
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        if (!-f $document_root$fastcgi_script_name) {
            return 404;
    }

   fastcgi_pass 127.0.0.1:9000;
   fastcgi_index index.php;
   include fastcgi_params;
}

Without this block the expected behavior is to show the file. You need to have PHP FPM running and configured to make this work. Instructions are available at http://wiki.nginx.org/PHPFcgiExample

dongxin0031
dongxin0031 另外,我尝试按照你发给我的信件的nginx.org链接,但仍然没有运气。 我每次都在尝试隐身模式,以避免出现cookie问题
接近 6 年之前 回复
dsfdgdsfd23212
dsfdgdsfd23212 服务正在运行:'php5-fpm start / running,process 20506'。 运行“sudo netstat -ntaup | grep php”不会返回任何内容(这是一个远程服务器)。 执行'ls / var / run / php * sock'得到返回:“/ var / run / php5-fpm.sock”
接近 6 年之前 回复
dongxie8906
dongxie8906 检查php-fpm是否正在运行服务php5-fpm状态。 如果php-fpm配置为侦听端口,则可以使用netstat -ntaup | grep php检查corrent端口和ip。 如果这不返回任何内容,php-fpm正在监听unix socket。 要检查这个运行ls / var / run / php * sock。
接近 6 年之前 回复
duanjipiao7076
duanjipiao7076 我试过这个(注释掉了位置块并将其插入到/ sites-enabled / default文件中),但没有运气。 我94%确定我的PHP FPM正在运行和配置 - 你知道我会怎么检查这个吗? 编辑:另外,这使得/api/XXX.php文件无用,所以我不得不恢复原来的状态
接近 6 年之前 回复
立即提问
相关内容推荐