2016-05-18 3 views
2

Я прошел через десятки потенциальных решений этой проблемы, но не могу найти ничего, что сработает. В принципе, файлы PHP не выполняются на моем сервере NginX + PHP_fpm + Ubuntu 14. У меня есть все пакеты, и они работают. Я очистил кеш браузера и т. Д., Но пока ничего не получилось. Я ценю всю помощь!NginX не выполняет PHP

На данный момент, если я попытаюсь получить доступ к файлу PHP, GET вернет его как файл HTML, но не выполнит сценарий.

Вот мой nginx.conf файл:

worker_processes 1; 
worker_rlimit_nofile 8192; 

events { 
worker_connections 3000; 
} 

error_log /var/log/nginx/error.log warn; 
pid  /var/run/nginx.pid; 

http { 
    include  /etc/nginx/mime.types; 
    #default_type application/octet-stream; 
    default_type text/html; 

    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; 

    keepalive_timeout 65; 

    #gzip on; 

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

Вот мои/сайты-доступных/файлов по умолчанию:

## 
# You should look at the following URL's in order to grasp a solid understanding 
# of Nginx configuration files in order to fully unleash the power of Nginx. 
# http://wiki.nginx.org/Pitfalls 
# http://wiki.nginx.org/QuickStart 
# http://wiki.nginx.org/Configuration 
# 
# Generally, you will want to move this file somewhere, and start with a clean 
# file but keep this around for reference. Or just disable in sites-enabled. 
# 
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples. 
## 

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

    # 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 /usr/share/nginx/html; 

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

    server_name localhost; 

    location/{ 
     # First attempt to serve request as file, then 
     # as directory, then fall back to displaying a 404. 
     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; 
     } 

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

     # With php5-cgi alone: 
     #fastcgi_pass 127.0.0.1:9000; 
     # With php5-fpm: 
     #fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass unix:/var/run/php5-fpm.sock; 
     #fastcgi_index index.php; 
     include fastcgi_params; 
    } 

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


# Virtual Host configuration for example.com 
# 
# You can move that to a different file under sites-available/ and symlink that 
# to sites-enabled/ to enable it. 
# 
#server { 
# listen 80; 
# listen [::]:80; 
# 
# server_name example.com; 
# 
# root /var/www/example.com; 
# index index.html; 
# 
# location/{ 
#  try_files $uri $uri/ =404; 
# } 
#} 

Вот мой сервер конф файл:

server { 

    listen 8000 default_server; 

    listen [::]:8000 default_server ipv6only=on; 

    root /var/www/html; 
    #index index.php index.html index.htm; 

    #location/{ 

    #index index.php index.html index.htm; 

    #} 
} 

Как вы можете видеть, я играл с этими файлами. Но безрезультатно.

+0

Что говорит ваш журнал ошибок (/var/log/nginx/error.log)? Вы можете захотеть grep cgi /var/log/nginx/error.log и посмотреть, что всплывает. Держу пари, ты найдешь свой ответ там. – Sean

+0

Ничего не входит в журнал ошибок при попытке загрузить файл php. –

+0

Какой URL-адрес вы запрашиваете? – Sean

ответ

1

Итак, основываясь на наших комментариях назад и вперед, вам нужно добавить этот раздел в конфигурацию nginx для конфигурации сервера, прослушивая: 8000.

Это регулярное выражение сообщает nginx, что всякий раз, когда он получает запрос на URL-адрес с файлом, заканчивающимся на .php, чтобы отправить его в процесс fastcgi. В противном случае он будет по умолчанию возвращать необработанный файл, который соответствует в/var/www/html.

Надеюсь, что это поможет.

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

    # With php5-cgi alone: 
    #fastcgi_pass 127.0.0.1:9000; 
    # With php5-fpm: 
    #fastcgi_split_path_info ^(.+\.php)(/.+)$; 
    fastcgi_pass unix:/var/run/php5-fpm.sock; 
    #fastcgi_index index.php; 
    include fastcgi_params; 
} 
+0

работал! Спасибо! Они указали, что блок местоположения по умолчанию не выполнялся. Поэтому переместить его в фактический файл конфигурации, исправил его. –

Смежные вопросы