Nginx загружает файл вместо выполнения запроса MySql

Nginx загружает файл вместо выполнения запроса MySql

Я столкнулся с очень странной проблемой при попытке настроить NGINX для использования PHP и MySQL.

Сначала все вроде бы нормально и работает. Но это впечатление длится только до тех пор, пока не поступит SQL-запрос (по крайней мере, так мне кажется). И вместо того, чтобы передать результат запроса в PHP, мне предлагают загрузить файл с типом application/octet-stream.

Когда я использую SQLite или вообще не использую базу данных, все нормально. Есть ли у кого-нибудь идеи, почему это происходит?

Когда я просматриваю информацию о PHP, я получаю следующий результат:

Дополнительные проанализированные файлы .ini:

/etc/php/7.0/fpm/conf.d/10-mysqlnd.ini, /etc/php/7.0/fpm/conf.d/10-opcache.ini, /etc/php/7.0/fpm/conf.d/10-pdo.ini, /etc/php/7.0/fpm/conf.d/15-xml.ini, /etc/php/7.0/fpm/conf.d/20-calendar.ini, /etc/php/7.0/fpm/conf.d/20-ctype.ini, /etc/php/7.0/fpm/conf.d/20-curl.ini, /etc/php/7.0/fpm/conf.d/20-dom.ini, /etc/php/7.0/fpm/conf.d/20-exif.ini, /etc/php/7.0/fpm/conf.d/20-fileinfo.ini, /etc/php/7.0/fpm/conf.d/20-ftp.ini, /etc/php/7.0/fpm/conf.d/20-gd.ini, /etc/php/7.0/fpm/conf.d/20-gettext.ini, /etc/php/7.0/fpm/conf.d/20-iconv.ini, /etc/php/7.0/fpm/conf.d/20-imagick.ini, /etc/php/7.0/fpm/conf.d/20-imap.ini, /etc/php/7.0/fpm/conf.d/20-intl.ini, /etc/php/7.0/fpm/conf.d/20-json.ini, /etc/php/7.0/fpm/conf.d/20-mbstring.ini, /etc/php/7.0/fpm/conf.d/20-mcrypt.ini, /etc/php/7.0/fpm/conf.d/20-memcache.ini, /etc/php/7.0/fpm/conf.d/20-mysqli.ini, /etc/php/7.0/fpm/conf.d/20-pdo_mysql.ini, /etc/php/7.0/fpm/conf.d/20-pdo_sqlite.ini, /etc/php/7.0/fpm/conf.d/20-phar.ini, /etc/php/7.0/fpm/conf.d/20-posix.ini, /etc/php/7.0/fpm/conf.d/20-pspell.ini, /etc/php/7.0/fpm/conf.d/20-readline.ini, /etc/php/7.0/fpm/conf.d/20-recode.ini, /etc/php/7.0/fpm/conf.d/20-shmop.ini, /etc/php/7.0/fpm/conf.d/20-simplexml.ini, /etc/php/7.0/fpm/conf.d/20-sockets.ini, /etc/php/7.0/fpm/conf.d/20-sqlite3.ini, /etc/php/7.0/fpm/conf.d/20-sysvmsg.ini, /etc/php/7.0/fpm/conf.d/20-sysvsem.ini, /etc/php/7.0/fpm/conf.d/20-sysvshm.ini, /etc/php/7.0/fpm/conf.d/20-tidy.ini, /etc/php/7.0/fpm/conf.d/20-tokenizer.ini, /etc/php/7.0/fpm/conf.d/20-wddx.ini, /etc/php/7.0/fpm/conf.d/20-xmlreader.ini, /etc/php/7.0/fpm/conf.d/20-xmlrpc.ini, /etc/php/7.0/fpm/conf.d/20-xmlwriter.ini, /etc/php/7.0/fpm/conf.d/20-xsl.ini

А это моя конфигурация MySQL (также из PHP info):

Настройки MySQL

Как видите, статистика mysqlnd показывает 0?!

Я пытаюсь сделать это с помощью WordPress, а также "Ионизировать". Ionize также показывает мне некоторые ошибки MySQL:

Ошибка внутри Ionize (ошибка MySql)

Кто-нибудь знает, как решить эту проблему (или хотя бы отладить, поскольку в файлах журнала ошибок нет)?

Спасибо за любые подсказки!

решение1

В файлах конфигурации Nginx, расположенных в /etc/nginx/nginx.confили /etc/nginx/sites-available/, протокол http2 включен в файлах конфигурации для порта 80. Просто замените listen 80 http2;на listen 80;.

решение2

nginx не скачивает файлы, он просто отправляет HTTP-ответы.
Nginx обычно отвечает за установку Content-Type:поля в заголовке HTTP и по умолчанию nginx используетMIMEapplication/octet-stream в качестве запасного варианта, когда он не может определить тип контента.
Когда браузер получает заголовок с этим типом контента, он предлагает выполнить загрузку, так как application/octet-stream — это тип MIME для двоичных файлов.
Для меня это признак того, что nginx настроен неправильно, потому что когда он fastcgi_passнастроен правильно, он возвращает html/plainзаголовок.
Вы также можете задать тип MIME напрямую

http://nginx.org/en/docs/http/ngx_http_core_module.html#types

или этот фрагмент установит MIME по умолчанию для nginx наtext/plain

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup
# change application/octet-stream to text/plain
sudo sed -i 's/default_type application\/octet-stream/default_type text\/plain/' 
    /etc/nginx/nginx.conf

Кроме того, если вы правильно настроите nginx и PHP и отправите правильные Content-Type:заголовки, браузеры вроде Chrome продолжат кэшировать предыдущие значения, поэтому они продолжат предлагать загрузку.
Это можно обойти, открыв инструменты разработчика, зайдя в настройки самих инструментов разработчика и нажавотключить кэш(пока инструменты разработчика открыты)

Связанный контент