Nginx не передает URI в php5-fpm, а вместо этого передает текстовый файл

Nginx не передает URI в php5-fpm, а вместо этого передает текстовый файл

как указано выше, uri не передается в nginx. Я включил весь блок "try", чтобы показать это.

location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    set $page_to_view "/index.php";
    try_files $uri $uri.php $uri/;
    # Uncomment to enable naxsi on this location
    # include /etc/nginx/naxsi.rules
}

Таким образом, по сути, это означает: «О, эй, мы создали $uri.php, и этот файл существует, давайте передадим его на сервер вместо того, чтобы отправлять его в php».

и моя часть fpm ниже.

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
#   # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

#   # With php5-cgi alone:
#   fastcgi_pass 127.0.0.1:9000;
#   # With php5-fpm:
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
}

Почти сток. Так что я не понимаю, почему nginx больше этого не делает. Я знаю, что он работал с fastcgi под Debian, но теперь нет, и я потерял свой старый файл конфигурации из-за сбоя жесткого диска, и это единственный файл, резервную копию которого я не сделал перед отправкой диска обратно, так как я думал, что будет совершенно нормально переписать его.

решение1

Вы не указали, какой URI пытаетесь загрузить, но я предполагаю, что он не заканчивается на .php.

Ваша проблема в том, что вы не воспринимаете директиву try_filesбуквально, как следует из ее названия. Это конкретно try aфайл.Это задокументировано как try_files file ... uri;то, что только последний аргумент будет рассматриваться как откат, вызывающий внутреннюю перезапись. Любой аргумент до последнего проверяется как статический файл и, если он найден, обслуживается как статический файл.

Это значит, что вы можете сделать try_files $uri $uri/ $uri.php;, но не можете сделатьtry_files $uri $uri.php $uri/

решение2

попробуйте заменить

location ~ \.php$ {

с

location ~ \.php {

и $document_root с фактическим каталогом, где находится файл php

например

fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;

Связанный контент