Nginx は MySql クエリを実行する代わりにファイルをダウンロードしています

Nginx は MySql クエリを実行する代わりにファイルをダウンロードしています

PHP と MySQL を使用するために NGINX を設定しようとすると、非常に奇妙な問題が発生します。

最初は、すべてが順調に機能しているように見えます。しかし、その印象は 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 情報から引用)。

MySQL設定

ご覧のとおり、mysqlnd の静的には 0 が表示されています。

私はWordPressでもこれをやろうとしています。イオン化"。Ionize は MySQL エラーも表示しています:

Ionize 内部のエラー (MySql エラー)

これを解決する方法(またはログ ファイル内にエラーがないので少なくともデバッグする方法)を知っている人はいますか?

ヒントがあればよろしくお願いします!

答え1

/etc/nginx/nginx.confまたはにある Nginx 構成ファイルでは、/etc/nginx/sites-available/ポート 80 の構成ファイルで http2 プロトコルが有効になっています。listen 80 http2;を に置き換えるだけですlisten 80;

答え2

nginxはファイルをダウンロードせず、HTTPレスポンスを送信するだけです。nginx
は通常、HTTPヘッダーのフィールドを設定する責任がありContent-Type:、デフォルトではnginxはマイムコンテンツタイプを判別できない場合は、application/octet-stream をフォールバックとして使用し
ます。ブラウザがこのコンテンツタイプのヘッダーを受信すると、application/octet-stream はバイナリファイルの MIME タイプであるため、ダウンロードアクションが促されます。
これは、nginx が適切に構成されていないことを示していると思います。適切に構成されている場合は、ヘッダーfastcgi_passが返されますhtml/plain。MIME
タイプを直接設定することもできます。

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

または、このスニペットはnginxのデフォルトのMIMEを次のように設定します。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などのブラウザは以前の値をキャッシュし続けるため、ダウンロードを促し続けることになります。
これは、開発者ツールを開き、開発者ツール自体の設定に移動して、キャッシュを無効にする(開発ツールが開いている間)

関連情報