Nginx с Slim Framework - php файлы загружаются - PullRequest
0 голосов
/ 18 ноября 2018

Я пытаюсь настроить простой REST API для подключения к базе данных и решил сделать это, используя nginx и Slim Framework.Установил оба (слим локально в каталоге проекта через менеджер зависимостей Composer /home/some_user/slim_project/).

После этого я попытался реализовать пример кода Slim и следовал парам руководств, но со всеми своими попытками язакончился неудачей.Либо загружается php-файл, либо я просто получаю страницу Slim "Page not found".

Проект выполняется на Raspberry Pi с настроенным динамическим DNS.

Моя структура и код выглядят такэто:

/ home / some_user / slim_project / public / index.php

<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

require '../vendor/autoload.php';

$app = new \Slim\App;
$app->get('/hello/{name}', function (Request $request, Response $response, 
array $args) {
    $name = $args['name'];
    $response->getBody()->write("Hello, $name");

    return $response;
});
$app->run();

и конфигурация nginx:

/etc / nginx / sites-enabled / default

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /home/some_user/slim_test/public/;

        server_name mySlimTest1.ddns.net;

        location / {
                if (!-e $request_filename){
                        rewrite ^(.*)$ /index.php break;
                }
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        }
}

Что бы я ни пытался, все, что происходит, это загрузка php-файла, или в некоторых случаях я получаю 404, когда добавляю пример '/привет / Hans 'до конца URL сервера.

Я следовал этому уроку, например: https://www.slimframework.com/docs/v3/tutorial/first-app.html
Я явно что-то здесь упускаю.Любая помощь будет оценена.

1 Ответ

0 голосов
/ 18 ноября 2018

Ваш rewrite...break вызывает обработку нового URI в том же месте, вы должны использовать rewrite...last при внутреннем перенаправлении на .php URI из другого блока location. Подробнее см. в этом документе .

Однако ваш блок if выполняет функцию, аналогичную try_files. Та же функциональность может быть достигнута с помощью следующего:

location / {
    try_files $uri $uri/ /index.php$is_args$args;
}
...