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,/等等/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 static 顯示0?

我正在嘗試使用 wordpress 以及“電離「。Ionize 也向我顯示了一些 MySQL 錯誤:

Ionize 內部錯誤(MySql 錯誤)

有誰知道如何解決(或至少調試,因為日誌檔案中沒有錯誤)這個問題?

感謝您的任何提示!

答案1

在 Nginx 設定檔中,位於/etc/nginx/nginx.conf或中/etc/nginx/sites-available/,您已在連接埠 80 的設定檔中開啟 http2協定listen 80 http2;listen 80;

答案2

nginx 不下載文件,它只是發送 HTTP 回應。
Nginx 通常負責設定Content-Type:HTTP 標頭上的字段,預設情況下,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 等瀏覽器將繼續快取先前的值 - 因此它將繼續提示下載。
可以透過開啟開發人員工具,進入開發人員工具本身的設置,然後按一下禁用快取(當開發工具開啟時)

相關內容