Установите Laravel с помощью nginx в подкаталоге

Я пытаюсь включить PHP только для одного подкаталога (каталога laravel), но мне не удалось заставить это работать. NGINX всегда говорит 404 «Файл не найден» или php говорит «входной файл не указан». Что я делаю неправильно?

Это моя конфигурация местоположения:

        location /laravel {
root   html/laravel/public;
index   index.php index.html index.html;
try_files   $uri $uri/ /index.php?$query_string;

location ~ \.php$ {
root   html/laravel/public;
fastcgi_pass   127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  document_root$fastcgi_script_name;
#include        fastcgi_params;
include fastcgi.conf;
}
}

UDPATE 1Кажется, что nginx неправильно оценивает мои выражения местоположения:

2018/09/12 16:30:44 [ошибка] 26476 # 24408: * 1 Ошибка CreateFile () «C: /Server/nginx/html/index.php» (2: система не может найти указанный файл), клиент : 127.0.0.1, сервер: localhost, запрос: «GET / laravel / HTTP / 1.1», хост: «localhost»

Это неправильный путь и, по крайней мере, корень / location:

   location / {
root   C:/Server/nginx/html;
index  index.html index.htm index.php;
}

Я пытался переместить блок, но ничего не изменилось.

ОБНОВЛЕНИЕ 2:
Кажется, что nginx очень глючит. В документации говорится:

Проверяет наличие файлов в указанном порядке и использует первый найденный файл для обработки запроса; обработка выполняется в текущем контексте. Путь к файлу создается из параметра file в соответствии с директивами root и alias. Можно проверить существование каталога, указав косую черту в конце имени, например, «$ URI /». Если ни один из файлов не был найден, производится внутреннее перенаправление на uri, указанный в последнем параметре.

Как показывает мой журнал ошибок, директива try_files не учитывает корневой путь, потому что пытается открыть файл относительно другого блока местоположения.

-2

Решение

Как отметил @Richard в связанном потоке Stackoverflow, похоже, это ошибка nginx. Для меня это решение работает с nginx:

        location  /laravel {
alias html/laravel/public;
index   index.php index.html index.html;
try_files  $uri $uri/  @nested;

location ~ \.php$ {
fastcgi_pass   127.0.0.1:9000;
#fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi.conf;
fastcgi_index   index.php;
fastcgi_param  SCRIPT_FILENAME  $request_filename;
#include        fastcgi_params;
}
}

location @nested {
rewrite /laravel/(.*)$ /laravel/index.php?/$1 last;
}

Источник: https://serversforhackers.com/c/nginx-php-in-subdirectory

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]