Nginx

瀏覽器下載文件而不是打開 php 文件

  • September 20, 2021

所以,我發布了一個答案,因為在兩次全新安裝之後,我設置了一個但不同的東西(以我的觀點)。就像我上面說的那樣,我面臨著兩難境地,因為我所擁有的配置與我能找到的任何其他答案都不相同。例如 :

我的 /etc/nginx 文件夾基本構成如下:

|- /etc/nginx/
|  |- conf.d/
|  |  |- default.conf
|  |
|  |- fastcgi_params
|  |- mime.types
|  |- modules/ -> /usr/lib/nginx/modules
|  |- nginx.conf
|  |- scgi_params
|  |- uwsgi_params

沒有 /sites-available 或 /sites-enabled 隨處可見,提到的 fastcgi-php.conf 實際上是根文件夾中的 fastcgi_params,因此我的預設值不在 site-available 文件夾中。

這是我現在擁有的兩個配置文件(域隱藏在 my_domain.com 下):首先:nginx.conf(幾乎未觸及)

   user  nginx;

worker_processes  auto;

error_log  /var/log/nginx/error.log notice;

pid        /var/run/nginx.pid;


events {
   worker_connections  1024;

}

http {
   include       /etc/nginx/mime.types;
   include       /etc/nginx/sites-available/*.conf;
   default_type  application/octet-stream;


   log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                     '$status $body_bytes_sent "$http_referer" '

                     '"$http_user_agent" "$http_x_forwarded_for"';



   access_log  /var/log/nginx/access.log  main;
   sendfile        on;
   #tcp_nopush     on;
   keepalive_timeout  65;
   #gzip  on;
   include /etc/nginx/conf.d/*.conf;

}

其次 /etc/nginx/conf.d/default.conf

   server {
   listen       80;
   server_name  my_domain.com www.my_domain.com;

   location / {
       root /var/www/www.my_domain.com;
       index  index.php index.html index.htm;
   }

   #error_page  404              /404.html;

   # redirect server error pages to the static page /50x.html
   #
   error_page   500 502 503 504  /50x.html;
   location = /50x.html {
       root   /var/www/www.my_domain.com;
   }

   # proxy the PHP scripts to Apache listening on 127.0.0.1:80
   #
   #location ~ \.php$ {
   #    proxy_pass   http://127.0.0.1;
   #}

   # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
   #
   location ~ \.php$ {
       fastcgi_split_path_info ^(.+?\.php)(/.*)$;
       #if (!-f $document_root$fastcgi_script_name) {
       #    return 404;
       #}
       root           /var/www/www.my_domain.com;
   #    fastcgi_pass   127.0.0.1:9000;
       fastcgi_index  index.php;
   #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
       include        fastcgi_params;
       fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
   }
   

}

我還加了一行

text/php            php;

對於 mime.types,我還記得在我使用的瀏覽器(Firefox、Opera 和 Chrome)中刪除 my_domain 的記憶體。

但是,文件仍然被下載。

我做錯什麼了 ?

編輯:因為我想創建一個 blog.my_domain.com、shop.my_domain.com 和 forum._mydomain.com,所以我創建了 /site-available 和 /site-enabled 文件夾,打算創建一個 blog/forum/shop .my_domain.com.conf 在位於 /sites-available 中的每個同名文件夾中,但我正在等待一個工作配置以使它們在 nginx.conf 中可見(帶有包含行,對嗎?)。

所以我真的不明白這兩個文件夾是如何工作的。子域的 CNAME 記錄設置為 my_domain.com。我還閱讀了有關為這些子網站製作符號連結的資訊,但我真的不知道從哪裡到哪裡?再次感謝

錯誤日誌告訴我與 /var/run/php/ 的連接被拒絕。預設使用者是 www-data www-data,但我的預設 nginx 使用者是 nginx(如果我更改它,它甚至不會啟動。)我應該做一個

chown nginx:nginx /var/run/php/

?

要配置 php,您必須在系統上安裝一個 php-fpm 版本。並將此程式碼段添加到塊中的 nginx conf 中server

您必須更改php5-fpm為系統上安裝的版本。

 location ~ \.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;
 }

您缺少 PHP 解釋器,NGINX 在其 wiki 上有一篇關於 FPM 的文章。

引用自:https://serverfault.com/questions/1077642