2014-01-13 4 views
9

Iv'e настроил сервер Nginx php на Linux-машине REHL. При доступе к файлам html все идет хорошо, но, пытаясь получить доступ к файлу php, файл загружается, а не выполняется.Nginx загружает php вместо того, чтобы запускать его

Это мой nginx.conf:

user nginx; 
worker_processes 1; 

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


events { 
    worker_connections 1024; 
} 


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

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

... и это блок-сервер:

server { 
    listen  80; 
    server_name {mywebsitename}; 

    #access_log logs/host.access.log main; 

    location/{ 
     root /usr/share/nginx/html/{mywebsitename}/; 
    } 

    location /ngx_status_2462 { 
     stub_status on; 
     access_log off; 
     allow all; 
    } 

    location ~ \.php$ { 
#    fastcgi_pass unix:/var/run/php5-fpm.sock; 

     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/{mywebsitename}$fastcgi_script_name; 
     include fastcgi_params; 
     } 

     error_page 404    /404.html; 

     location = /404.html { 
      root /usr/share/nginx/html; 
     } 


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

Итак, это небольшая точка, вы написали 'root/usr/share/nginx/html/{mywebsitename} /;' поэтому я предположил, что '{mywebsitename}' не содержит завершающего '/', поэтому '{mywebsitename} $ fastcgi_script_name ; 'должно быть' {mywebsitename}/$ fastcgi_script_name; 'right? (добавлена ​​косая черта) –

ответ

7

У меня была такая же проблема. Я использовал Ubuntu 12.04 и Linux Mint 14, так что разные ОС, но, вероятно, будут иметь одинаковые проблемы.

Возможно, возникла пара проблем. Во-первых, вам нужно установить php5-fpm (FastCGI Process Manager). Я пытался запустить его с моей стандартной версией PHP, но он не работал - http://www.php.net/manual/en/install.fpm.php

У меня также был установлен Apache, и даже если он не запускался, у него должен был быть конфликт, потому что, как только я удалил Apache, я был способный выполнять файлы PHP.

Я также хотел бы посмотреть на этой линии

fastcgi_pass 127.0.0.1:9000; 

И рассмотреть вопрос об изменении его

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

Ниже приведено подробное руководство по установке Nginx и PHP5-FPM для RHEL (и других ОС)

http://www.if-not-true-then-false.com/2011/install-nginx-php-fpm-on-fedora-centos-red-hat-rhel/

+0

Это было. Большое спасибо! –

+0

Удаление apache2 - это то, что исправлено для меня, после этого скрипты PHP выполняются вместо загружаемых ... Интересно, что apache2 каким-то образом искал MIME-типы или что-то в этом роде ... – dreamlax

+0

Альтернатива удалению apache2: Когда корневой сервисный каталог ('/ var/www/html' для меня) была одинаковой для nginx и apache2, nginx загрузил php-файл (даже если apache не работал, как и вы). Однако перемещение корневого каталога nginx в другой каталог (я создал его в '/ var/www/nginx /'), чтобы nginx функционировал правильно. – JTG

8

Это может быть из-за MimeType вы отправляете:

default_type application/octet-stream; 

http://mimeapplication.net/octet-stream

+0

Устранить эту проблему, но только для корневого URL. Провел 2-3 часа, пытаясь исправить это и, наконец, наткнулся на ваш ответ. Если бы я мог бы дать вам все обороты. – cspray

1

Вы должны изменить пользователю NGIN х вместо апача в этом файле а/и т.д./PHP-fpm.d/www.conf

; Unix user/group of processes 
; Note: The user is mandatory. If the group is not set, the default user's group 
;  will be used. 
; RPM: apache Choosed to be able to access some dir as httpd 
;user = apache 
user = nginx 
; RPM: Keep a group allowed to write in log dir. 
;group = apache 
group = nginx 

и, конечно, перезапуск службы PHP-FPM рестарт и сервис Nginx перезапустить

0

Закомментируйте default_type application/octet-stream;

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