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;"?