Ubuntu 16 + nginx + php. Загрузите файл php вместо render [duplicate]

Не уверен, что это все еще актуально, но такое же поведение имеет место и для словарей. Посмотрите на этот пример.

a = {'par' : [1,21,3], 'sar' : [5,6,8]}
b = a
c = a.copy()
a['har'] = [1,2,3]

a
Out[14]: {'har': [1, 2, 3], 'par': [1, 21, 3], 'sar': [5, 6, 8]}

b
Out[15]: {'har': [1, 2, 3], 'par': [1, 21, 3], 'sar': [5, 6, 8]}

c
Out[16]: {'par': [1, 21, 3], 'sar': [5, 6, 8]}
94
задан Apeiron 31 August 2014 в 12:39
поделиться

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 line

    root /usr/share/nginx/www;
    index index.php index.html index.htm;
    
  5. Uncomment 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 неделю назад, поэтому я действительно надеюсь помочь вам в этом. Я использую текстовый редактор для редактирования файлов. запустите apt-get install nano, если у вас его нет. Google, чтобы узнать больше.

86
ответ дан vsync 18 August 2018 в 18:36
поделиться

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

0
ответ дан Al Che 18 August 2018 в 18:36
поделиться

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

/ etc / nginx / sites-available / default

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:

2
ответ дан Benjamin McFerren 18 August 2018 в 18:36
поделиться

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

Я побежал:

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

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

#}

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

5
ответ дан Bjorn Lindholm Hansen 18 August 2018 в 18:36
поделиться
  • 1
    Приятно прикоснуться к синтаксису тестовых команд в дополнение к советам по устранению проблемы. – greybeard 1 July 2017 в 18:43

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

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

После этого перестала загружаться php-файлы.

0
ответ дан briankip 18 August 2018 в 18:36
поделиться

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

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

0
ответ дан Dongato 18 August 2018 в 18:36
поделиться

Вам нужно отредактировать / 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;
    }
}
28
ответ дан hoss 18 August 2018 в 18:36
поделиться
  • 1
    ЭТО. Это единственное, что сработало для меня! – RockJake28 19 September 2016 в 00:30
  • 2
    Что такое SCRIPT_FILENAME? – mp3por 20 June 2017 в 13:41
  • 3
    Если вы используете PHP 7.0, это верно: fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; – Andrew Fox 14 October 2017 в 06:37
  • 4
    @ AndrewFox- мое имя файла php7.0-fpm.pid, а не php7.0-fpm.sock в /var/run/php/, что это значит? – vsync 29 April 2018 в 18:16
  • 5
    @Pathros - я обнаружил, что wordpress (в моем случае) имеет файлы конфигурации сервера в другой папке, и те были теми, которые нужно было отредактировать /etc/nginx/conf.d/wordpress_https.conf – vsync 23 June 2018 в 14:52

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

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

0
ответ дан Ivan 18 August 2018 в 18:36
поделиться

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

    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
ответ дан Kelvin Low Ee Hahn 18 August 2018 в 18:36
поделиться

Обновить nginx config / 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;
    }

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

7
ответ дан M Arfan 18 August 2018 в 18:36
поделиться

Раскомментировать расположение .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;
    }
0
ответ дан Manivannan Murugavel 18 August 2018 в 18:36
поделиться

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

1.fix 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 / site-available

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

4.restart nginx service

sudo service nginx restart

5.restart php service

service php5-fpm restart

6.enjoy

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

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

3
ответ дан Miloš 18 August 2018 в 18:36
поделиться

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

16
ответ дан np8 18 August 2018 в 18:36
поделиться
  • 1
    Я думаю, что режим перезагрузки и инкогнито помог мне. Спасибо тонне за то, что мы можем сделать. – Swapnil Mhaske 9 March 2017 в 14:32
  • 2
    Большое спасибо. Вы спасли мой день) Также +1 для инкогнито! – Eddie 23 June 2017 в 12:17
  • 3
    Ты только спас меня после часа разочарования. Все было правильно, просто нужно было сбросить кеш браузера (или, как в моем случае, я попробовал его в приватном режиме просмотра). – user2490003 2 September 2017 в 22:43
  • 4
    Это делало это для меня, а также после нескольких часов пыталось предложить множество других решений. – Kleag 17 January 2018 в 00:27
  • 5
    – Viktor Joras 27 August 2018 в 09:03

Сначала вы должны 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

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

0
ответ дан Sanaulla 18 August 2018 в 18:36
поделиться

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

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
3
ответ дан Sharif El Shobkshy 18 August 2018 в 18:36
поделиться

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

  • Follow шаг за шагом этот документ на 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) и т. Д. ...

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

0
ответ дан SonDang 18 August 2018 в 18:36
поделиться

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

location / {
        try_files $uri $uri/ /index.php?$query_string;
}
2
ответ дан Tomeg 18 August 2018 в 18:36
поделиться

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

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

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

$ sudo systemctl reload nginx
0
ответ дан Waqleh 18 August 2018 в 18:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: