2015-11-08 2 views
0

Я установил конфигурацию nginx для запуска php с fcgi в Windows. Вот мой конфиг:nginx служит index.php вместо его выполнения

server { 
    charset utf-8; 
    client_max_body_size 128M; 

    listen 8888; 
    server_name api.domain.local; 

    root  /projects/domain.server.new/app/rest/web; 
    index  index.php; 

    error_log /webservers/nginx/logs/api.domain.local.error.log; 

    location/{ 
     # Redirect everything that isn't a real file to index.php 
     try_files $uri $uri/ /index.php?$args; 
    } 

    #uncomment to avoid processing of calls to non-existing static files by Yii 
    location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ { 
     try_files $uri =404; 
    } 
    error_page 404 /404.html; 

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

    location ~ //.(ht|svn|git) { 
     deny all; 
    } 
} 

Я проверил, если FCGI сервер работает, и это все в порядке:

E:\Webservers\Nginx>netstat -aon | findstr :9123 
    TCP 127.0.0.1:9123   0.0.0.0:0    LISTENING  2644 

Затем я запросить файл, используя curl для предотвращения кэширования файлов:

$ curl -i localhost:8888 

HTTP/1.1 200 OK 
Server: nginx/1.6.1 
Date: Sun, 08 Nov 2015 09:15:20 GMT 
Content-Type: application/octet-stream 
Content-Length: 960 
Last-Modified: Tue, 27 Oct 2015 17:33:50 GMT 
Connection: keep-alive 
ETag: "562fb57e-3c0" 
Accept-Ranges: bytes 

<?php 
defined('YII_DEBUG') or define('YII_DEBUG', true); 
defined('YII_ENV') or define('YII_ENV', 'dev'); 

require(__DIR__ . '/../../vendor/autoload.php'); 
require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php'); 
require(__DIR__ . '/../../common/config/bootstrap.php'); 
require(__DIR__ . '/../config/bootstrap.php'); 

$config = yii\helpers\ArrayHelper::merge(
    require(__DIR__ . '/../../common/config/main.php'), 
    require(__DIR__ . '/../../common/config/main-local.php'), 
    require(__DIR__ . '/../config/main.php'), 
    require(__DIR__ . '/../config/main-local.php') 
); 

$application = new yii\web\Application($config); 
$application->run(); 

И он выводит содержимое файлов, а не запускает его. Я попробовал несколько решений, предлагаемых в других темах:

  1. Изменено default_type application/octet-stream к default_type text/html в конфигурации
  2. Изменено location ~/.php$ к location ~*/.php$

Но это не работает. Как я могу его отладить?

ответ

1

Конфигурация линии

location ~ /.php$ { 

не выглядит правильно. Это означает: место, которое заканчивается символом /, за которым следует любой символ, за которым следует php. Например: foobar/zphp.

Что вы имели в виду, вероятно, является

location ~ \.php$ { 

, что означает: место, которое заканчивается .php. Например: /index.php

Такое же исправление применяется к другому разделу, где вы также путаете \ с /.

+0

спасибо, я обновил конфигурацию в своем вопросе с исправлениями, но файл по-прежнему возвращается. Не могли бы вы взглянуть, если что-то еще отсутствует? –

+0

@Maximus у вас странный '*' после '~' в соответствующей строке. Даже не уверен, что это имеет смысл. – zerkms

+0

Я удалил его оттуда, stil не работает :( –

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