Nginx служит .php-файлам в качестве загрузок, вместо их выполнения

Я устанавливаю веб-сайт в капельке (Digital Ocean). У меня есть проблема для правильной установки NGINX с PHP. Я сделал учебник https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04, но когда я пытаюсь запустить некоторые .php файл просто загружает его … например … http://5.101.99.123/info.php работает, но … Если я перейду на главную http://5.101.99.123 он загрузит мой индекс. php: /

Есть идеи?

 -rw-r--r-- 1 agitar_user www-data 418 Jul 31 18:27 index.php -rw-r--r-- 1 agitar_user www-data 21 Aug 31 11:20 info.php 

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

 server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /var/www/html; index index.html index.htm index.php; # Make site accessible from http://localhost/ server_name agitarycompartir.com; 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_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } location / { try_files $uri $uri/ =404; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } 

… Прокомментированы другие «местоположение» (#)

Попробуй это:

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

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

     listen 80; ## listen for ipv4; this line is default and implied listen [::]:80 default_server ipv6only=on; ## listen for ipv6 
  3. Оставить только имя сервера

     # Make site accessible (...) server_name localhost; 
  4. Добавьте index.php в индексную строку

     root /usr/share/nginx/www; index index.php index.html index.htm; 
  5. Недопустимое местоположение ~ .php $ {}

     # pass the PHP scripts to FastCGI server listening on (...) # location ~ \.php$ { try_files $uri =404; 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_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } 
  6. Измените /etc/php5/fpm/php.ini и убедитесь, что для параметра cgi.fix_pathinfo установлено значение 0

  7. Перезапустите nginx и php5-fpm (если вы не знаете, как это сделать, перезапустите сервер)

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

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

 server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.php index.html index.htm; location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 

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

У меня была такая же проблема, и ни один из ответов не разрешил проблему.

Я побежал:

 sudo nginx -t 

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

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

 nginx: [emerg] unexpected end of file, expecting "}" in /etc/nginx/sites-enabled/default:115 nginx: configuration file /etc/nginx/nginx.conf test failed 

Поэтому я вошел в конфигурационный файл и на последней строке был

 #} 

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

Если какой-либо из предложенных ответов не работает, попробуйте следующее:

1.fix http://www.conf в etc / php5 / fpm / pool.d:

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.

3. исправить файл по умолчанию в etc / nginx / доступ к сайту

location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; }

Служба 4.restart nginx

sudo service nginx restart

5.restart php service

перезапуск службы php5-fpm

6.Enjoy

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

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

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

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

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

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

  location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } 

Посетите здесь подробную информацию Подробнее здесь

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

/ И т.д. / Nginx / сайты-отсутствуют / по умолчанию

 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_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } 

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

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

  location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; 

к моему настраиваемому файлу конфигурации, например etc/nginx/sites-available/example.com.conf

Добавление в /etc/nginx/sites-available/default не помогло мне.

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

1) Файл MyApp

vi / etc / nginx / sites-available / myApp

 server { listen 80; listen [::]:80; root /var/www/myApp; index index.php index.html index.htm; location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 

Пользователи PHP5

+ Изменить

 fastcgi_pass unix:/run/php/php7.0-fpm.sock; 

в

 fastcgi_pass unix:/var/run/php5-fpm.sock; 

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

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

Место нахождения:

PHP5 /etc/php5/fpm/php.ini

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


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

FPM

php5 sudo service php5-fpm restart

php7 sudo service php7.0-fpm restart

NGINX

 sudo service nginx restart 

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

fastcgi_split_path_info ^(.+\.php)(/.+)$;

После этого он прекратил загрузку файлов php.

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

  • Выполните шаг за шагом этот документ в Digital Ocean .

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

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

default.conf :

 location ~ \.php$ { try_files $uri =404; #fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; #instruct nginx execute php7 files instead download them :D fastcgi_pass unix:/var/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } 
  • Перезапустите службы Nginx и PHP sudo systemctl restart php-fpm и sudo systemctl restart nginx .

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

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

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

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

 location ~ \.php$ { include snippets/fastcgi-php.conf; # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; } 

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

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

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

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

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

 sudo apt-get install php-gettext sudo nano /etc/nginx/sites-available/default 

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

 server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.php index.html index.htm; server_name localhost; location / { try_files $uri $uri/ =404; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 

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

sudo systemctl restart nginx

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

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

 location / { try_files $uri $uri/ /index.php?$query_string; }