Nginx не видит php файлы

Обновлено: 05.07.2024

Привет. Мне нужна помощь в настройке config для nginx. Я новичок в NGINX и сталкиваюсь с некоторыми проблемами.

В моем sites-available есть default файл

Он содержит код ниже

Над кодом работает отлично, когда я пишу URL

Я попробовал ниже, но не повезло

ОТВЕТЫ

Ответ 1

Вы должны добавить "include fastcgi.conf" в

Ответ 2

Устранение ошибки "Нет входного файла"

Если вы используете nginx с php-cgi и выполнили стандартную процедуру для его настройки, вы часто можете получить ошибку "Нет входного файла". Эта ошибка возникает, когда демон php-cgi не может найти файл .php для выполнения с использованием параметра SCRIPT_FILENAME, который был ему предоставлен. Я расскажу об общих причинах ошибки и ее решениях. Неправильный путь отправляется демону php-cgi

Чаще всего неправильный путь (SCRIPT_FILENAME) отправляется на демон fastCGI. Во многих случаях это связано с неправильной конфигурацией. Некоторые из настроек, которые я видел, настроены следующим образом:

Теперь в этой конфигурации много чего не так. Очевидной и вопиющей проблемой является корневая директива в расположении/блоке. Когда корень определен внутри блока местоположения, он доступен/определен только для этого блока. Здесь блок местоположения/изображений не будет соответствовать ни одному запросу, потому что у него нет определенного $document_root, и нам придется избыточно определить root для него. Очевидно, корневая директива должна быть перемещена из местоположения/блока и определена в блоке сервера. Таким образом, блоки местоположения наследуют значение, определенное в блоке родительского сервера. Конечно, если вы хотите определить другой $document_root для местоположения, вы можете поместить корневую директиву в блок местоположения.

Другая проблема заключается в том, что значение параметра fastCGI SCRIPT_FILENAME жестко закодировано. Если мы изменим значение корневой директивы и переместим наши файлы где-нибудь еще в цепочке каталогов, php-cgi вернет ошибку "Нет входного файла", потому что не сможет найти файл в жестко закодированном местоположении, которое didnt изменение при изменении $document_root. Итак, мы должны установить SCRIPT_FILENAME, как показано ниже:

Мы должны иметь в виду, что директива root должна быть в блоке сервера или иначе, только $fastcgi_script_name будет передана как SCRIPT_FILENAME, и мы получим ошибку "Нет входного файла".

Ответ 3

Просто перезагрузка моего php-fpm решила проблему. Как я понимаю, в основном проблема php-fpm, чем nginx.

Ответ 4

Такая же проблема.

добавив эту директиву:

Ответ 5

Ответ 6

Я решил его, заменив

$document_root с C:\MyWebSite\www\

Ответ 7

Это, вероятно, потому, что с завершающим косой чертой NGINx пытается найти индексный файл по умолчанию, который, вероятно, index.html без конфигурации. Без конечной косой черты он пытается сопоставить файл testervice, который он не может найти. Либо это, либо/или у вас нет файла индекса по умолчанию в папке testservice .

Попробуйте добавить эту строку в конфигурацию server :

Надеюсь, это поможет!

Изменить

Мой ответ не очень ясен, см. этот пример, чтобы понять, что я имею в виду

Ответ 8

У меня была такая же ошибка, и моя проблема заключалась в том, что у меня был мой php файл в моем зашифрованном домашнем каталоге. И я запускаю свой fpm с пользователем www-data, и этот пользователь не может читать php файлы, даже если права на файл были правильными. Solutioin заключался в том, что я запускаю fpm с пользователем, которому принадлежит домашний каталог. Это можно изменить в следующем файле:

надеюсь, что это вам поможет:)

Ответ 9

Я попробовал все настройки выше, но это исправило мою проблему. Вы должны определить nginx, чтобы проверить, существует ли файл php в этом месте. Я нашел try_files $uri = 404; решение этой проблемы.

Ответ 10

Причины старых настроек open_basedir, скопированных с файлом мошенника user.ini в резервной копии

Решение удалить его

Ответ 11

Мой случай: SELinux был включен и запрещал php-fpm выполнять мои скрипты.

Диагноз: временно отключите SELinux и посмотрите, исчезнет ли проблема.

Ответ 12

Эти ответы мне не помогли, мой администратор php показал мне ошибку "Не указан входной файл". Но я знал, что я изменил php-версию раньше. Итак, я нашел причину: это не nginx, это параметр php.ini doc_root! я нашел

в php.ini и изменил его на

После этого патча мой админ работает хорошо.

Ответ 13

user = nginx group = nginx

и затем перезагрузил процесс php-fpm. Надеюсь, это поможет

Ответ 14

Если у кого-то все еще есть проблемы. Я решил это, исправив это так:

Внутри файла conf сайта (пример: /etc/nginx/conf.d/SITEEXAMPLE.conf ) у меня есть следующая строка:

Ошибка возникает из-за того, что мой сайт НЕ находится в папке " /usr/share/nginx/html ", а в папке: /var/www/html/SITE/

Итак, измените эту часть, оставив код, как показано ниже. Примечание: для тех, кто использует стандарт сайта в /var/www/html/YOUR_SITE/


Не ставить пакет php.


так там для c7 не предлагают php ставить, только php-fpm. ошибся, пора спать.

Deleted ( 02.02.17 00:37:13 )
Последнее исправление: Deleted 02.02.17 00:40:25 (всего исправлений: 1)


Паставить, а потом отключить. Нахуа?


Вот так весело собирают пакеты в центоси. Когда у меня krfb и krdc оказались в одном пакете и ставились только вместе - я тоже был удивлён.




а если телнетом на порт php-fpm стукануть, то что потдается?


Ну, если даже инструкция с самого РУСЛИНУКСНЕТ не работает, то совершенно очевидно, что способов запустить лемп-стек на центоси не существует.


Ставишь nginx + php + php-fpm , в nginx.conf :

Стартуешь демон php-fpm и проверяешь результат :)

Тогда еще в конфиге пула php-fpm надо на этот сокет поменять, по дефолту там 9000 порт.


а если телнетом на порт php-fpm стукануть, то что потдается?


В подходе. Для начала разберись в общих чертах как эта связка должна работать, а потом уже настраивай её. Тебе ведь её потом эксплуатировать.
Не надо пытаться слепо повторить инструкцию.


В общих чертах понимаю, что к nginx php привязывается через fastcgi-интерфейс php-fpm, а к apache с помощью модуля mod_php.

В /etc/php-fpm.conf есть строки:

В /etc/nginx/nginx.conf есть:

sunny1983 ★★★★★ ( 02.02.17 15:34:30 )
Последнее исправление: sunny1983 02.02.17 15:35:36 (всего исправлений: 1)


У меня до php-fpm клиентские запросы кажется на доходят?

Покажи весь конфиг.


nginx обращается к демону php-fpm по протоколу FastCGI через unix или обычный сетевой сокет. Домен php-fpm запускает воркеры которые исполняют php-скрипты.

А вот это вот что такое:

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

И почему директория логов php-fpm находится внутри директории логов nginx?


\.php$ но nginx ругаясь в логах на неправильный конфиг. Тогда я добавил location

\.php$ в default_server




А может в jobs? За два килорубля настрою тебе LEMP. Ну или за килорубль, если на дебиане


Демпингую на 500 WMR :-D


А чё не сразу до одного доширака?


Так неинтересно. Должен быть аукцион дух состязания.


А вообще: не получится настроить php-fpm, повесь на бекенд Апач.




sunny1983 ★★★★★ ( 02.02.17 18:37:54 )
Последнее исправление: sunny1983 02.02.17 18:41:06 (всего исправлений: 2)


Ладно, ладно) Ты если чё пиши, не стесняйся, мы тут.


Ты опять все усложнил.


Ну ок, читай документацию дальше. Пока-что ты прочёл явно недостаточно. Или понял недостаточно.


Держи конфиг, не мучайся



Для каждого домена я делал свой конфиг.

Закомментируй стандартные настройки (все секции server) в

. Почистить кеш в браузере.

Конфиг owncloud, может кстати кому то еще пригодиться:


Так,
Если другие версии (сборки) ngninx и php-fpm данная инструкция сработает?
У меня установлены nginx 1.10.2 из epel, php и php-fpm 5.4.16 из base.

То что у тебя в nginx.conf в директиве listen не стоит default_server это нормально?

Нормально, зависит от конфигурации.

Да должно сработать конечно. Про кеш в браузере не забывайте очистить.

HarDX ★ ( 03.02.17 12:28:09 )
Последнее исправление: HarDX 03.02.17 12:29:07 (всего исправлений: 2)


Сменил в конфигах tcp-сокет на файл сокета unix:/var/run/php-fpm/php-fpm.sock, почистил кэш - по прежнему нифига.

Для тех кто не читал переписку, любые попытки добавить директивы fastcgi_* куда-либо кроме default_server приводят к тому, что nginx отказывается запускаться.

Мой / etc / nginx / sites-available / default

Прочие «локации» прокомментированы .

Изменить /etc/nginx/sites-available/default

Раскомментируйте обе строки прослушивания, чтобы nginx прослушивал порт 80 IPv4 и IPv6.

Оставьте server_name в покое

Добавьте index.php в строку index

Раскомментировать location

Отредактируйте /etc/php5/fpm/php.ini и убедитесь, что для cgi.fix_pathinfo установлено значение 0

Перезапустите nginx и php5-fpm sudo service nginx restart && sudo service php5-fpm restart

Я начал использовать Linux только неделю назад, поэтому очень надеюсь помочь вам в этом. Я использую текстовый редактор nano для редактирования файлов. запустите apt-get install nano, если у вас его нет. Google, чтобы узнать больше.

Я долго боролся с этой проблемой, и эти шаги у меня сработали.

Шаг 1. Конфигурация блока расположения для всех файлов PHP

Шаг 2. Добавьте fastcgi_param в файл конфигурации. Нам просто нужно открыть файл / etc / nginx / fastcgi_params и добавить следующую строку в конец файла.

А затем перезапустите службы,

Вам нужно добавить это в / etc / nginx / sites-enabled / default для выполнения файлов php на сервере Nginx:

У меня была аналогичная проблема, которая была решена путем очистки кеша браузера (также отлично работала с другим браузером).

Обновите конфигурацию nginx / etc / nginx / sites-available / default или свой файл конфигурации

Если вы используете php7, используйте это

Если вы используете php5, используйте это

Посетите здесь, чтобы получить полную информацию. Подробности здесь

Я вижу много решений выше, и многие из них работали у меня правильно, но я не понимал, что они делают, и беспокоился о том, чтобы просто скопировать и вставить код, в частности, fastcgi . Итак, вот мои 2 цента,

  1. nginx - это веб-сервер (а не сервер приложений ), поэтому он может обслуживать только статические страницы.
  2. всякий раз, когда мы пытаемся отобразить / вернуть файл .php, например index.php, nginx не знает, что делать, поскольку он просто не может понять файл .php (или, если на то пошло, любое расширение, кроме нескольких избранных, таких как .html, .js и т. д., которые являются статическими файлами)
  3. Таким образом, для запуска других типов файлов нам нужно что-то, что находится между nginx и приложением (здесь приложение php). Именно здесь на помощь приходит общий интерфейс шлюза (CGI). Это часть программного обеспечения, которое управляет этой связью. CGI могут быть реализованы на любом возможном языке Python (uWSGI), PHP (FPM) и даже C. FastCGI - это, по сути, обновленная версия CGI, которая намного быстрее, чем CGI.

Для некоторых серверов, таких как Apache, встроена поддержка интерпретации PHP, и поэтому нет необходимости в CGI.

Эта цифровая ссылка на океан довольно хорошо объясняет шаги по установке FPM, и я не пишу шаги, необходимые для решения проблемы загрузки файлов php вместо рендеринга, поскольку другие ответы IMHO довольно хороши.

Для тестирования файла конфигурации в / etc / nginx / sites-available / default.

Это дало мне следующие ошибки:

Итак, я зашел в файл конфигурации, и в последней строке было

Я раскомментировал, снова запустил тестовую команду, и она сработала

Это сработало для меня.

1) Файл MyApp

Vi / и т. д. / nginx / сайты-доступные / myApp

2) Настройте cgi.fix_pathinfo

Установите cgi.fix_pathinfo в 0

3) Перезапустите службы

Php5 sudo service php5-fpm restart

Php7 sudo service php7.0-fpm restart

Мне помогло добавить ?$query_string в конец /index.php, как показано ниже:

listen = 127.0.0.1:9000;(delete all line contain listen= )

remove server block server<> (if exist) in block html<> because we use server<> in default (config file in etc/nginx/site-available) which was included in nginx.conf.

4. перезапустить службу nginx

5. перезапустите службу php

6. наслаждаться

Создайте любой файл php в / usr / share / nginx / html и запустите в «имя_сервера / имя_файла.php» (имя_сервера зависит от вашей конфигурации, обычно это localhost, имя_файла.php - имя файла, созданного в / usr / share / nginx / html).

Я использую Ubuntu 14.04

Приведенные выше фрагменты работали для меня в случае php7.2

Приведенный выше ответ, казалось, слишком много комментировал решение, которое я достиг. Вот как выглядел мой файл:

/ и т.д. / nginx / сайты-доступные / по умолчанию

Надеюсь, это поможет некоторым людям, которые расстроены воскресным днем ​​(c:

Мое решение было добавить

Добавление в /etc/nginx/sites-available/default у меня не сработало.

Для тех, у кого такая же проблема с PHP 7, это то, что я сделал, чтобы nginx правильно выполнял файлы php в CentOS 7, размещенный здесь, поэтому на случай, если у кого-то возникнет такая же проблема:

Пошагово следуйте этому документу на Цифровой океан.

Откройте /etc/nginx/conf.d/default.conf (по умолчанию у меня нет сайтов с включенными или доступными сайтами, вы можете отредактировать их соответствующим образом).

Отредактируйте параметр location , как показано ниже:

Перезапустите службы Nginx и PHP sudo systemctl restart php-fpm и sudo systemctl restart nginx .

И последнее, но самое важное: очистить кеш браузера или запустить его в incognito (Chrome) или Private Browsing (Firefox) и т. Д.

Надеюсь, это полезное и счастливое кодирование

Затем перезагрузите Nginx:

Это то, что в конечном итоге сработало в моем случае как правила перезаписи, в которых виноват
Я изменил правила перезаписи nginx следующим образом.

Очевидно, без ключевого слова last запрос не был перезапущен, поэтому он не попал в сегмент местоположения .php и был просто интерпретирован как загрузка -

Теперь я решил свою проблему с помощью этого кода (измените свой IP):

Что сработало для меня с Ubuntu 16.04, а php7 удалял эту строку

После этого он перестал скачивать файлы php.

Раскомментируйте расположение .php в / etc / nginx / sites-available / default

sudo vi / etc / nginx / sites-available / default:

Если что-то еще тебе не поможет. А может быть, раньше вы установили apache2 с тестовым файлом info.php. Просто очистите данные приложения (кеш, cookie) для localhost.

Проверьте, что расширение файла конфигурации nginx - * .conf.
например: /etc/nginx/conf.d/myfoo.conf

У меня такая же ситуация. После того, как я переименовал свой файл конфигурации с myfoo в myfoo.conf, он исправился. Не забудьте перезапустить nginx после его переименования.

Сначала вам нужно Remove cache в браузере

Затем откройте терминал и выполните следующую команду:

Затем добавьте следующий код в файл default :

Если какое-либо несоответствие, просто исправьте и перезапустите Nginx с терминала с помощью следующей команды

sudo systemctl перезапустить nginx

Затем перейдите в браузер и наслаждайтесь .

Для меня это была строка: fastcgi_pass unix: /var/run/php5-fpm.sock;

Что должно было быть просто: fastcgi_pass unix: /run/php5-fpm.sock;

Решением для меня было очистить кеш Cloudflare.

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

Для записи, я обнаружил, что мой php-fpm не работает, и исправил это с помощью service php7.2-fpm stop

(Я настраивал этот сервер в первую очередь для электронной почты и не использовал PHP, когда впервые установил nginx, просто как способ более легкого запуска certbot.)

Веб-серверы Nginx и Apache мало похожи друг на друга, и их отличия касаются не только особенностей подключения пользователей, но и обработки URL на сервере. Очень часто новые пользователи Nginx получают ошибку 404 для URL, которые, по сути, должны были бы работать.

В этой статье рассмотрим, почему возникает ошибка "404 not found Nginx", а также способы её устранения и отладки.Мы не будем разбираться с ситуацией, когда файла действительно нет на сервере - это решение, не требующее пояснений. Мы рассмотрим проблему обработки location в Nginx.

Почему возникает ошибка 404 в Nginx

Давайте сначала разберёмся, как обрабатываются URL в Nginx. Когда веб-сервер определил, к какому блоку server (сайту) нужно передать запрос пользователя, просматриваются все префиксные блоки location и выбирается тот, который подходит лучше всего. Например, рассмотрим стандартную конфигурацию для WordPress. Здесь префиксные location отмечены зелёным, а с регулярным выражением - оранжевым:

location /
index index.html index.php;
>
location /favicon.ico
access_log off;
>
location

* \.(gif|jpg|png)$ expires 30d;
>
location

\.php$
fastcgi_pass localhost:9000;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
include fastcgi_params;
>

Префиксные локейшены всегда начинаются с символа /. Регулярные же содержат символы регулярных выражений:

$ ^ * и так далее. Если пользователь запрашивает favicon.ico, то будет выбран второй location, так как он лучше всего соответствует запросу, при любом другом запросе будет выбран location /, так как он соответствует всем запросам, а других префиксных location у нас нет. Это просто, а дальше начинается магия. После того, как был найден нужный location, Nginx начинает проверять все регулярные выражения в порядке их следования в конфигурационном файле.

При первом же совпадении Nginx останавливает поиск и передаёт управление этому location. Или, если совпадений не было найдено, используется ранее обнаруженный префиксный location. Например, если запрос заканчивается на .php, то первый location будет проигнорирован, а управление передастся четвёртому (

Как включить режим отладки Nginx?

Сначала нам необходимо установить версию Nginx с поддержкой отладки. Чтобы проверить, поддерживает ли ваша текущая версия этот режим, наберите:

В выводе должна быть строчка "--with-debug". Если её нет, значит отладка не поддерживается, и надо установить версию с поддержкой. В CentOS такой пакет называется nginx-debug. Для его установки наберите:

sudo yum install nginx-debug

Теперь появился ещё один исполняемый файл, и он собран уже с поддержкой отладки:

Откройте конфигурационный файл вашего сайта или глобальный конфигурационный файл, если вы не задавали настройки логов отдельно для каждого сайта, и в конце стоки error_log замените error на debug:

Останавливаем обычную версию и запускаем версию с отладкой:

systemctl stop nginx
systemctl start nginx-debug

1. Регулярные выражения

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

Видим, что серверу пришёл запрос /vstats. Дальше он проверяет location: /, /robots.txt, /vatsts/, /site-control/. Здесь уже можем понять, в чём проблема - промазали на один слеш. Дальше проверяются все регулярные выражения, и, так как в них ничего найдено не было, выбирается location /.

Далее директива try_files пытается найти файл /vstats, не находит и ищет index.php, который, в свою очередь, возвращает 404.

Если мы наберём, то что ожидает видеть Nginx - /vstats/, то откроется наша страница статистики.

Если мы добавим к конфигурационному файлу ещё один location с регулярным выражением, например:

То абсолютно все запросы будут обрабатываться именно этим регулярным выражением и, естественно, что ничего работать не будет. Видим, что приходит запрос /vstats/:

Он совпадает с префиксным location, но потом Nginx видит наше регулярное выражение и передаёт управление ему.

Поэтому будьте очень осторожны с регулярными выражениями, если они вам нужны, то размещайте их только внутри префиксных location, чтобы ограничить их область действия этим location, иначе может возникнуть ошибка 404 nginx.

2. Недостаточно памяти

Если php-скрипту не хватило оперативной памяти для выполнения, и его процесс был убит операционной системой, то Nginx тоже может вернуть ошибку 404. Такое поведение вы будете наблюдать, когда скрипт очень долго выполняется, а потом появляется "404 Not Found" или страница ошибки вашего движка. Обычно эта неисправность тоже видна в отладочном логе.

Решить такую проблему можно, освободив память на сервере, часто такое может возникать из-за утечек памяти в php, когда процессы php-fpm занимают почти всю память на сервере. Поэтому перезапуск php-fpm решает проблему:

systemctl restart php-fpm

Чтобы избежать этой проблемы в будущем, можно настроить автоматический перезапуск процессов после обработки определённого количества запросов. Например каждые 200 запросов:

3. Не найден index

Если вы запрашиваете URL вида /vstats/, но в настройках Nginx не указан файл index, который нужно использовать для этой ссылки, то у вас ничего не выйдет, и вы получите 404. Вы можете добавить директиву index в ваш location:

location / index index.php index.html index.htm;
>

Или сразу в server, в Nginx все location наследуют директивы, установленные в server.

4. Другие проблемы

Подобных проблем, вызывающих 404 в Nginx, может быть очень много, но все они решаемы, и всё, что нужно для их решения, есть в отладочном логе Nginx. Просто анализируйте лог и на основе этого вносите исправления.

Выводы

В этой статье мы рассмотрели основные причины, из-за которых может возникнуть ошибка 404 not found Nginx. Как видите, может быть много проблем, но всё достаточно просто решается. А с какими проблемами, вызывающими эту ошибку, вы сталкивались? Как их решали? Напишите в комментариях!

спросил(а) 2021-01-05T20:02:28+03:00 10 месяцев, 2 недели назад

Отредактируйте /etc/nginx/sites-available/default

Раскомментируйте обе строки прослушивания, чтобы заставить nginx прослушивать порт 80 IPv4 и IPv6.

Оставьте server_name покое

Добавьте index.php к строке index

Раскомментировать location

Отредактируйте /etc/php5/fpm/php.ini и убедитесь, что cgi.fix_pathinfo имеет значение 0

Перезапустите nginx и php5-fpm sudo service nginx restart && sudo service php5-fpm restart Перезапустите nginx и sudo service nginx restart && sudo service php5-fpm restart

Я только начал использовать Linux неделю назад, поэтому я очень надеюсь помочь вам в этом. Я использую текстовый редактор Nano для редактирования файлов. запустите apt-get install nano, если у вас его нет. Google на это, чтобы узнать больше.

ответил(а) 2021-01-05T20:02:28+03:00 10 месяцев, 2 недели назад

Вам нужно добавить это в /etc/nginx/sites-enabled/default для запуска файлов php на Nginx Server:

ответил(а) 2021-01-05T20:02:28+03:00 10 месяцев, 2 недели назад

У меня была аналогичная проблема, которая была решена с помощью освобождения кеша браузера (также отлично работала с другим браузером).

ответил(а) 2021-01-05T20:02:28+03:00 10 месяцев, 2 недели назад

Обновите конфигурацию nginx/etc/nginx/sites-available/default или ваш файл конфигурации

если вы используете php7 используйте это

если вы используете php5 используйте это

Посетите здесь для более подробной информации Подробнее здесь

ответил(а) 2021-01-05T20:02:28+03:00 10 месяцев, 2 недели назад

проверить файл конфигурации на /etc/nginx/sites -available/default.

Он дал мне эти ошибки:

Итак, я зашел в конфигурационный файл, а на последней строке был

Я раскоментировал, снова запустил тестовую команду и работал

ответил(а) 2021-01-05T20:02:28+03:00 10 месяцев, 2 недели назад

Это работало для меня.

1) Файл MyApp

2) Настроить cgi.fix_pathinfo

Установите cgi.fix_pathinfo в 0

PHP5
/etc/php 5/fpm/php.ini

PHP7
/etc/php/ 7.0/fpm/php.ini

3) Службы перезагрузки

php5 sudo service php5-fpm restart

php7 sudo service php7.0-fpm restart

ответил(а) 2021-01-05T20:02:28+03:00 10 месяцев, 2 недели назад

listen = 127.0.0.1:9000;(delete all line contain listen= )

2.fix nginx.conf в usr/local/nginx/conf:

remove server block server<> (if exist) in block html<> because we use server<> in default (config file in etc/nginx/site-available) which was included in nginx.conf.

\.php$ fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
>

Служба 4.restart nginx

5.restart php service

6.Enjoy

Создайте любой php файл в /usr/share/nginx/html и запустите его в "server_name/file_name.php" (имя_сервера зависит от вашей конфигурации, normaly - localhost, file_name.php - имя файла, созданного в /usr/share/nginx/html ).


Я использую Ubuntu 14.04

ответил(а) 2021-01-05T20:02:28+03:00 10 месяцев, 2 недели назад

Я видел много решений выше, и многие из них работали правильно для меня, но я не понимал, что они делают, и боялся просто скопировать код, в частности, fastcgi. Так вот мои 2 цента,

nginx - это веб-браузер (а не браузер приложения), поэтому он может обслуживать только статические страницы. всякий раз, когда мы пытаемся отрендерить/вернуть файл .php, например index.php, nginx не знает, что делать, поскольку он просто не может понять файл .php (или, в этом отношении, любое расширение, кроме нескольких избранных). как .html,.js и т.д., которые являются статическими файлами) Таким образом, для запуска других типов файлов нам нужно что-то, что находится между nginx и приложением (здесь приложение php). Именно здесь вступает в действие интерфейс общего шлюза (CGI). Это часть программного обеспечения, которая управляет этой связью. CGI могут быть реализованы на любом возможном языке Python (uWSGI), PHP (FPM) и даже C. FastCGI - это в основном обновленная версия CGI, которая намного быстрее, чем CGI.

Для некоторых серверов, таких как Apache, имеется встроенная поддержка для интерпретации PHP и, следовательно, нет необходимости в CGI.

Эта цифровая океанская ссылка довольно хорошо объясняет шаги по установке FPM, и я не пишу шаги, необходимые для решения проблемы загрузки php файлов вместо рендеринга, так как остальные ответы ИМХО довольно хороши.

Читайте также: