Nginx и FastCGI загружают файлы PHP вместо их обработки

Я работаю на Windows 7 (64-разрядная версия), с PHP 5.4.12 и Nginx 1.5.8.

Я прочитал много учебных пособий по настройке и устранению неполадок, связанных с тем, что при запросе файла PHP с моего локального хоста он загружает его в виде файла вместо отображения страницы PHP. Ниже мой файл nginx.conf:

worker_processes  1;

events {
    worker_connections  1024;
}

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

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen 8081;
        server_name localhost;
        access_log C:/nginx/logs/access.log;
        error_log C:/nginx/logs/error.log;
        root C:/nginx/html;

        fastcgi_param  REDIRECT_STATUS    200;

        location ~ \.php$ {
          fastcgi_pass   127.0.0.1:9000;
          fastcgi_index  index.php;
          fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
          include        fastcgi_params;
        }
    }

}

Я запускаю nginx.exe вручную через командную строку. Я также попытался вручную запустить php-cgi.exe в отдельной командной строке, например так:

C:\php5.4.12\php-cgi.exe -b 127.0.0.1:9000

Файл php, который я запрашиваю, находится в C:/nginx/html, и я запрашиваю его как:

http://localhost:8081/info.php

И это загружает это. Содержимое этого файла PHP:

<?php
phpinfo();
?>

Как я могу получить мои PHP-скрипты для запуска в этой среде. Кто-нибудь имеет опыт работы с этим?

4 ответа

Решение

Попробуй поменять default_type application/octet-stream; в default_type text/html;Возможно, ваш php-скрипт не устанавливает MIME-тип контента, и он идет от nginx.

У меня тоже был включен http2 на порту 80. Отключение решило проблему.

Я обнаружил, что если у вас есть http2 директива для порта 80 на сервере.http2 работает только под https. Следовательно, если вы удалитеhttp2, это должно решить вашу проблему.

Попробуйте разместить " * " здесь

location ~* \.php$ {

Что-то не так с вашими путями, и nginx не знает, что путь, по которому осуществляется доступ через URL, это путь, который он должен пройти через "fastcgi_pass". Поэтому он дает файл для скачивания.

Проверьте свой журнал ошибок от:

C:/nginx/logs/error.log;

У вас есть "C:/nginx/html/info.php;"?

Другие вопросы по тегам