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

Я устанавливаю веб-сайт в капле (цифровой океан). У меня есть проблема для правильной установки 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-доступно / по умолчанию

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
            }

... Другие" местоположение " комментируются (#)

18 ответов


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

  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. оставить server_name только

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

    root /usr/share/nginx/www;
    index index.php index.html index.htm;
    
  5. раскомментировать location ~ \.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 неделю назад, поэтому я действительно надеюсь помочь вам в этом. Я использую текстовый редактор Nano для редактирования файлов. запустите 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;
    }
}

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


обновить nginx config / etc/nginx / sites-доступно / по умолчанию или ваш файл конфигурации

Если вы используете 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;
    }

посетите здесь для всех деталях здесь


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

Я побежал:

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

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

#}

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


этот workded для меня.

1) MyApp файл

vi / etc/nginx/сайты-доступно / 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;

to

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

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

установить cgi.fix_pathinfo для 0

расположение:

РНР5 файл /etc/php5 с/ФПМ/РНР.ini

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


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

FPM

рнр5 sudo service php5-fpm restart

php7 sudo service php7.0-fpm restart

nginx и

sudo service nginx restart

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

1.исправить ВСП.Conf в файле/etc / php5 с/ФПМ/бассейн.д:

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

2.исправить это 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 / site-available

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

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

sudo службы nginx перезапуск

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

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

6.наслаждайтесь

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

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


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

/etc/nginx/sites-доступно / по умолчанию

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:


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

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

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

    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 не работал на меня.


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

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

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


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

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

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

  • редактировать


раскомментировать .расположение php в /etc/nginx/sites-доступно / по умолчанию

sudo vi / etc/nginx/sites-доступно / по умолчанию:

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 с информация.тестовый файл php. Просто очистите данные приложения (кэш,cookie) для localhost.


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

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


сначала надо Remove cache в браузере

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

sudo apt-get install php-gettext
sudo nano /etc/nginx/sites-available/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 перезапустить nginx

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


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

, который должен был быть просто: fastcgi_pass unix:/run / php5-fpm.носок;


Я свой случай я не использовал /etc/nginx/sites-available/default я использовал другой файл конфигурации блока сервера (например example.com), и единственный способ исправить эту проблему-удалить символическую ссылку файла конфигурации блока сервера по умолчанию:

$ rm /etc/nginx/sites-enabled/default

затем перезагрузка Nginx:

$ sudo systemctl reload nginx