Браузер загружает файлы PHP вместо их выполнения. Webmin + NGinx

Эта проблема

Сегодня я попытался обновить PHP 7.0 до 7.2, и это привело к тому, что веб-сайты на сервере загружались через браузер, а не выполнялись как обычно.

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get purge php7.0 php7.0-common
sudo apt-get install php7.2-curl php7.2-xml php7.2-zip php7.2-gd php7.2-mysql php7.2-mbstring

Мой вопрос

Кто-нибудь может дать мне несколько примеров, как это отладить? И какое-нибудь дополнительное понимание относительно того, что может продолжаться?

Моя теория

Технически я не знаю, что вызвало это, но мой опыт подсказывает мне, что это одна строка в одном файле из NGinx, которую нужно отредактировать.

Что я пробовал

Я обнаружил, что об этой проблеме обычно сообщают здесь, на SO. Но решениям не хватало важной информации, такой как путь к файлу, или пути к файлам, на которые они ссылаются, не существуют в моей системе, или предлагаемое решение не решает проблему.

Во многих статьях упоминаются конфигурации для PHP FPM и / или FastCGI. Но я не могу определить, как подтвердить, установлены они или работают, и как выглядит правильная конфигурация для стандартного веб-сервера.

Что помогло

Я обновил файл /etc/nginx/nginx.conf из default_type application/octet-stream; в default_type text/html; и это остановило загрузку файлов, но приводит к пустой странице. Включая мой phpinfo.php

Моя среда

  • AWS EC2 Small
  • Ubuntu 18.04
  • NGinx 1.10.3
  • Webmin
  • Virtualmin

1 ответ

Во-первых, не ясно, обновили ли вы php-fpm или нет. Но это легко, поэтому давайте предположим, что вы сделали.

Параметры конфигурации Nginx, которые вы упомянули, должны быть такими:

include /etc/nginx/mime.types;
default_type application/octet-stream;

Со списком mime.types по умолчанию можно найти здесь

Затем, так как вы удалили предыдущую установку, вы потеряли php.ini конфигурации.

Одной из проблем, которые обычно трудно уловить, может быть то, что ваше PHP-приложение использует короткие теги php (<? instead of <?php), но его использование запрещено в /etc/php7.2/fpm/php.ini, должно быть:

short_open_tag=On

Надеюсь, это кому-нибудь поможет =)

Другие вопросы по тегам