欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

Nginx服务器某个目录无法执行PHP文件

程序员文章站 2022-05-05 13:20:48
...
服务器使用的LNMP 的配置,但是只能访问静态的HTML CSS JS,一访问PHP文件就下载了下来。
但是这个服务器上的其他项目,PHP文件是可以正常执行的。
请教各位大神怎么解决?

Nginx配置,域名是mydomain.com

user  www www;

worker_processes auto;

error_log  /home/wwwlogs/nginx_error.log  crit;

pid        /usr/local/nginx/logs/nginx.pid;

#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;

events
        {
                use epoll;
                worker_connections 51200;
                multi_accept on;
        }

http
        {
                include       mime.types;
                default_type  application/octet-stream;

                server_names_hash_bucket_size 128;
                client_header_buffer_size 32k;
                large_client_header_buffers 4 32k;
                client_max_body_size 50m;

                sendfile on;
                tcp_nopush     on;

                keepalive_timeout 60;

                tcp_nodelay on;

                fastcgi_connect_timeout 500;
                fastcgi_send_timeout 500;
                fastcgi_read_timeout 500;
                fastcgi_buffer_size 1024k;
                fastcgi_buffers 16 1024k;
                fastcgi_busy_buffers_size 1024k;
                fastcgi_temp_file_write_size 1024k;

                gzip on;
                gzip_min_length  1k;
                gzip_buffers     4 16k;
                gzip_http_version 1.0;
                gzip_comp_level 2;
                gzip_types       text/plain application/x-javascript text/css application/xml;
                gzip_vary on;
                gzip_proxied        expired no-cache no-store private auth;
                gzip_disable        "MSIE [1-6]\.";

                #limit_conn_zone $binary_remote_addr zone=perip:10m;
                ##If enable limit_conn_zone,add "limit_conn perip 10;" to server section.

                server_tokens off;
                #log format
                log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
             '$status $body_bytes_sent "$http_referer" '
             '"$http_user_agent" $http_x_forwarded_for';

server {
        listen       80;
        server_name  mydomain.com;
        #access_log    main; /home/wwwlogs/mydomain.log  mydomain
            root  /wwwroot/web/mydomain.com/web;
            index  index.html index.htm index.php;
        location ~ [^/]\.php(/|$)
        {
             try_files $uri =404;
             fastcgi_pass    unix:/tmp/php-cgi.sock;
             fastcgi_index   index.php;
             fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
             include fastcgi.conf;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}

回复内容:

服务器使用的LNMP 的配置,但是只能访问静态的HTML CSS JS,一访问PHP文件就下载了下来。
但是这个服务器上的其他项目,PHP文件是可以正常执行的。
请教各位大神怎么解决?

Nginx配置,域名是mydomain.com

user  www www;

worker_processes auto;

error_log  /home/wwwlogs/nginx_error.log  crit;

pid        /usr/local/nginx/logs/nginx.pid;

#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;

events
        {
                use epoll;
                worker_connections 51200;
                multi_accept on;
        }

http
        {
                include       mime.types;
                default_type  application/octet-stream;

                server_names_hash_bucket_size 128;
                client_header_buffer_size 32k;
                large_client_header_buffers 4 32k;
                client_max_body_size 50m;

                sendfile on;
                tcp_nopush     on;

                keepalive_timeout 60;

                tcp_nodelay on;

                fastcgi_connect_timeout 500;
                fastcgi_send_timeout 500;
                fastcgi_read_timeout 500;
                fastcgi_buffer_size 1024k;
                fastcgi_buffers 16 1024k;
                fastcgi_busy_buffers_size 1024k;
                fastcgi_temp_file_write_size 1024k;

                gzip on;
                gzip_min_length  1k;
                gzip_buffers     4 16k;
                gzip_http_version 1.0;
                gzip_comp_level 2;
                gzip_types       text/plain application/x-javascript text/css application/xml;
                gzip_vary on;
                gzip_proxied        expired no-cache no-store private auth;
                gzip_disable        "MSIE [1-6]\.";

                #limit_conn_zone $binary_remote_addr zone=perip:10m;
                ##If enable limit_conn_zone,add "limit_conn perip 10;" to server section.

                server_tokens off;
                #log format
                log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
             '$status $body_bytes_sent "$http_referer" '
             '"$http_user_agent" $http_x_forwarded_for';

server {
        listen       80;
        server_name  mydomain.com;
        #access_log    main; /home/wwwlogs/mydomain.log  mydomain
            root  /wwwroot/web/mydomain.com/web;
            index  index.html index.htm index.php;
        location ~ [^/]\.php(/|$)
        {
             try_files $uri =404;
             fastcgi_pass    unix:/tmp/php-cgi.sock;
             fastcgi_index   index.php;
             fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
             include fastcgi.conf;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}

提示下载,证明Nginx并没有把PHP文件交给后端的PHP-FPM执行而是作为一个普通资源返回给浏览器了.尝试把:
location ~ [^/]\.php(/|$) 改为 location ~ \.php$

我猜你的sever配置有点问题,和其他的配置比对一下

相关标签: php nginx