Nginx ให้บริการไฟล์. php เป็นการดาวน์โหลดแทนที่จะดำเนินการ


151

ฉันกำลังติดตั้งเว็บไซต์ในหยด (Digital Ocean) ฉันมีปัญหาในการติดตั้ง NGINX ด้วย PHP อย่างถูกต้อง ฉันทำกวดวิชาhttps://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04แต่เมื่อฉันพยายามที่จะเรียกใช้บางอย่าง ไฟล์. php เป็นเพียงการดาวน์โหลด ... ตัวอย่างเช่น ... http://5.101.99.123/info.phpมันใช้งานได้ แต่ ... ถ้าฉันไปที่หน้าหลักhttp://5.101.99.123มันกำลังดาวน์โหลด index.php: /

ความคิดใด ๆ

-rw-r--r--  1 agitar_user www-data   418 Jul 31 18:27 index.php
-rw-r--r--  1 agitar_user www-data    21 Aug 31 11:20 info.php

/ etc / nginx / sites-available / default ของฉัน

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /var/www/html;
        index index.html index.htm index.php;

        # Make site accessible from http://localhost/
        server_name agitarycompartir.com;

               location ~ \.php$ {
                    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    #               # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
    #
    #               # With php5-cgi alone:
    #               fastcgi_pass 127.0.0.1:9000;
    #               # With php5-fpm:
                    fastcgi_pass unix:/var/run/php5-fpm.sock;
                    fastcgi_index index.php;
                    include fastcgi_params;
            }


              location / {

                    try_files $uri $uri/ =404;
                    # Uncomment to enable naxsi on this location
                    # include /etc/nginx/naxsi.rules
            }

... คนอื่น ๆ "สถานที่" มีการแสดงความคิดเห็น (#)


4
ใช่ ... คุณไม่ได้ตั้งค่า PHP-FPM ด้วย Nginx อย่างถูกต้อง นั่นคือทั้งหมดที่เราสามารถบอกคุณได้ว่าเนื่องจากคุณไม่ได้แสดงการกำหนดค่าของคุณ
แบรด

คุณต้องการดูไฟล์ใด ขอบคุณ @Brad
Apeiron

ไฟล์ใด (หรือไฟล์) ที่คุณใส่การตั้งค่าของคุณส่วนที่เกี่ยวข้องคือ ... ที่คุณตั้งค่า PHP-FPM ในการกำหนดค่า Nginx ของคุณ
แบรด

2
หลังจากเวลาผ่านไปหนึ่งชั่วโมงของ googling พบaskubuntu.com/a/601996/89455นี้- ถ้าคุณมีการกำหนดค่าที่ไม่ดีก่อนที่จะลองล้างแคช - ทำงานที่นี่!
tm_lv

1
ดูคำถาม / คำตอบที่คล้ายกันสำหรับ PHP7 ที่ stackoverflow.com/q/42664080/287948
Peter Krauss

คำตอบ:


131

ลองสิ่งนี้:

  1. แก้ไข /etc/nginx/sites-available/default

  2. ไม่ใส่ข้อคิดเห็นทั้งสองบรรทัดเพื่อให้ nginx listen บนพอร์ต 80 IPv4 และ IPv6

    listen   80; ## listen for ipv4; this line is default and implied
    listen   [::]:80 default_server ipv6only=on; ## listen for ipv6
  3. ทิ้งไว้server_nameคนเดียว

    # Make site accessible (...)
    server_name localhost;
  4. เพิ่มindex.phpไปยังindexบรรทัด

    root /usr/share/nginx/www;
    index index.php index.html index.htm;
  5. uncomment location ~ \.php$ {}

    # pass the PHP scripts to FastCGI server listening on (...)
    #
    location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
    
            # With php5-cgi alone:
            #fastcgi_pass 127.0.0.1:9000;
            # With php5-fpm:
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
    }
  6. แก้ไข/etc/php5/fpm/php.iniและตรวจสอบให้แน่ใจว่าcgi.fix_pathinfoได้ตั้งค่าเป็น0

  7. รีสตาร์ท nginx และ php5-fpm sudo service nginx restart && sudo service php5-fpm restart


ฉันเพิ่งเริ่มใช้ Linux เมื่อสัปดาห์ที่แล้วดังนั้นฉันหวังว่าจะช่วยคุณได้ ฉันใช้โปรแกรมแก้ไขข้อความนาโนเพื่อแก้ไขไฟล์ เรียกใช้ apt-get install nano หากคุณไม่มี Google บนเพื่อทราบข้อมูลเพิ่มเติม


14
service nginx restart && service php5-fpm restart
Duke

8
nginx -s reload
Duke

2
ด้วย PHP7-fpm คือ: บริการ php7.0-fpm เริ่มใหม่
Alex

1
@ จอยลองข้อเสนอแนะของคุณ แต่มันไม่ทำงาน ต้องใช้ fastcgi_pass unix: /run/php/php7.0-fpm.sock;
jdstaerk

1
สำหรับ php7.2: unix:/var/run/php5-fpm.sock;แปลงเป็นunix:/var/run/php/php7.2-fpm.sock;(สร้างอีกหนึ่งรัง/php)
Oleg Reym

50

คุณต้องเพิ่มสิ่งนี้ใน / etc / nginx / sites-enabled / default เพื่อเรียกใช้งานไฟล์ php บน Nginx Server:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.php index.html index.htm;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.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;
    }
}

SCRIPT_FILENAME คืออะไร
mp3por

2
หากคุณใช้ PHP 7.0 แสดงว่าถูกต้อง:fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
Andrew Fox

1
@ AndrewFox- ชื่อไฟล์ของฉันคือphp7.0-fpm.pidไม่ได้php7.0-fpm.sockใน/var/run/php/ สิ่งที่หมายความว่า?
vsync

@vsync ลองใช้ sudo service php7.0-fpm restart. ถ้าถุงเท้าหายไปแสดงว่ากระบวนการกำลังรัน php
zhisme

1
@Pathros - ฉันพบว่า wordpress (ในกรณีของฉัน) มีไฟล์ config ของเซิร์ฟเวอร์ในโฟลเดอร์อื่นและไฟล์เหล่านั้นจำเป็นต้องได้รับการแก้ไข/etc/nginx/conf.d/wordpress_https.conf
vsync

43

ฉันมีปัญหาที่คล้ายกันซึ่งแก้ไขได้โดยการล้างแคชเบราว์เซอร์ (ทำงานได้ดีกับเบราว์เซอร์ที่แตกต่างกัน)


5
ฉันคิดว่าการรีสตาร์ทและโหมดไม่ระบุตัวตนช่วยฉันได้ ขอบคุณสำหรับเสียงที่เราสามารถทำได้
Swapnil Mhaske

4
ขอบคุณมาก. คุณบันทึกวันของฉัน) +1 ด้วยแบบไม่ระบุตัวตน!
Eddie

3
สิ่งนี้ทำให้ฉันด้วยเช่นกันหลังจากเวลาผ่านไปหลายชั่วโมงพยายามแนะนำวิธีแก้ปัญหาอื่น ๆ อีกมากมาย
Kleag

1
มันแปลกสำหรับฉันที่ไซต์ของฉันทำงานบน IE และโครเมี่ยมในขณะที่มันทำงานช้าลงไซต์ที่ถูกเรียกใช้งาน มันเป็นความผิดของแคชโมซิลล่า
Viktor Joras

3
คุณประหยัดเวลาของฉัน
Amir Kaftari

12

อัพเดต nginx config / etc / nginx / sites-available / default หรือไฟล์ปรับแต่งของคุณ

ถ้าคุณใช้ php7 ให้ใช้สิ่งนี้

    location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php7.0-fpm.sock;      
    }

ถ้าคุณใช้ php5 ให้ใช้สิ่งนี้

    location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php5-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
    }

เยี่ยมชมที่นี่สำหรับรายละเอียดที่สมบูรณ์รายละเอียดที่นี่


ฉันลองแล้วมันใช้ไม่ได้กับฉันฉันใช้ Ubuntu 14.04 และ php 7.0 ฉันจะแก้ไขปัญหานี้ได้อย่างไร
Kishore

ลิงก์ที่ใช้ร่วมกันด้านบน "รายละเอียดที่สมบูรณ์" ใช้งานไม่ได้
Kishore

หมายถึงinclude snippets/fastcgi-php.conf;อะไร
ติโม

9

ฉันเห็นมากของการแก้ปัญหาดังกล่าวข้างต้นและหลายทำงานได้อย่างถูกต้องสำหรับผม แต่ผมไม่เข้าใจสิ่งที่พวกเขาทำและเป็นห่วงเพียงคัดลอกวางโค้ดเฉพาะfastcgi ดังนั้นนี่คือ 2 เซ็นต์ของฉัน

  1. nginx เป็นเว็บเซิร์ฟเวอร์ (ไม่ใช่แอปพลิเคชันเซิร์ฟเวอร์ ) และดังนั้นจึงสามารถให้บริการเฉพาะหน้าคงที่
  2. เมื่อใดก็ตามที่เราลองเรนเดอร์ / ส่งคืนไฟล์. php เช่น index.php, nginx ไม่รู้ว่าต้องทำอะไรเพราะมันไม่สามารถเข้าใจไฟล์. php ได้ (หรือสำหรับส่วนขยายอื่น ๆ เช่น. html, .jsเป็นต้นซึ่งเป็นไฟล์คงที่)
  3. ดังนั้นเพื่อที่จะเรียกใช้ไฟล์ประเภทอื่น ๆ เราต้องการสิ่งที่อยู่ระหว่าง nginx และแอปพลิเคชัน (นี่คือแอปพลิเคชัน php) นี่คือจุดที่มีเกตเวย์ทั่วไป (CGI) เข้ามาเป็นส่วนหนึ่งของซอฟต์แวร์ที่จัดการการสื่อสารนี้ CGIs สามารถนำไปใช้ในภาษาที่เป็นไปได้ Python (uWSGI), PHP (FPM) และแม้กระทั่ง C. FastCGI นั้นเป็น CGI รุ่นอัพเกรดซึ่งเร็วกว่า CGI มาก

สำหรับบางเซิร์ฟเวอร์เช่น Apache นั้นมีการสนับสนุนการแปล PHP และไม่จำเป็นต้องใช้ CGI

ลิงค์มหาสมุทรดิจิตอลนี้อธิบายขั้นตอนในการติดตั้ง FPM ค่อนข้างดีและฉันไม่ได้เขียนขั้นตอนที่จำเป็นในการแก้ปัญหาของไฟล์ php ที่ดาวน์โหลดมาแทนการเรนเดอร์ตั้งแต่คำตอบอื่น ๆ IMHO ค่อนข้างดี


ผู้อธิบายที่ดี ขอบคุณ
Jon

1
nginx เป็นเว็บ เซิร์ฟเวอร์ไม่ใช่เบราว์เซอร์โปรดแก้ไข
Geeocode

8

ฉันมีปัญหาเดียวกันและไม่มีคำตอบที่แก้ปัญหาได้

ฉันวิ่ง:

sudo nginx -t

เพื่อทดสอบไฟล์กำหนดค่าที่ / etc / nginx / sites-available / default

มันทำให้ฉันมีข้อผิดพลาดเหล่านี้:

nginx: [emerg] unexpected end of file, expecting "}" in /etc/nginx/sites-enabled/default:115
nginx: configuration file /etc/nginx/nginx.conf test failed

ดังนั้นฉันจึงเข้าไปในไฟล์กำหนดค่าและในบรรทัดสุดท้ายนั่นก็คือ

#}

ฉันไม่ใส่เครื่องหมายข้อคิดเห็นรันคำสั่งทดสอบอีกครั้งและใช้งานได้


สัมผัสที่ดีเพื่อรวมไวยากรณ์คำสั่งทดสอบนอกเหนือจากคำแนะนำในการแก้ไขปัญหา
greybeard

7

สิ่งนี้ได้ผลสำหรับฉัน

1) ไฟล์ MyApp

vi / etc / nginx / sites-available / myApp

server {
  listen 80;
  listen [::]:80;

  root /var/www/myApp;
  index index.php index.html index.htm;

  location ~ \.php$ {
      try_files $uri =404;
      fastcgi_split_path_info ^(.+\.php)(/.+)$;
      fastcgi_pass unix:/run/php/php7.0-fpm.sock;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          include fastcgi_params;
      }
}

ผู้ใช้ PHP5

เปลี่ยนแปลง

fastcgi_pass unix:/run/php/php7.0-fpm.sock;

ถึง

fastcgi_pass unix:/var/run/php5-fpm.sock;

2) กำหนดค่า cgi.fix_pathinfo

ตั้งค่า cgi.fix_pathinfo เป็น 0

สถานที่ตั้ง:

PHP5 /etc/php5/fpm/php.ini

PHP7 /etc/php/7.0/fpm/php.ini


3) เริ่มบริการใหม่

FPM

php5 sudo service php5-fpm restart

php7 sudo service php7.0-fpm restart

NGINX

sudo service nginx restart

fastcgi_pass unix: /run/php/php7.0-fpm.sock; ไม่ถูกต้อง ควรเป็น /var/run/php/php7.0-fpm.sock; และคุณต้องอัปเดตเวอร์ชัน php ที่ระบุด้วยสิ่งที่คุณติดตั้งไว้เช่น: /var/run/php/php7.2-fpm.sock
VanAlbert

4

สำหรับฉันมันช่วยเพิ่ม?$query_stringในตอนท้ายของ /index.php เช่นด้านล่าง:

location / {
        try_files $uri $uri/ /index.php?$query_string;
}

3

หากคำตอบใด ๆ ที่เสนอไม่ทำงานลองสิ่งนี้:

1. แก้ไข www.conf ใน etc / php5 / fpm / pool.d:

listen = 127.0.0.1:9000;(delete all line contain listen= )

2. แก้ไข nginx.conf ใน usr / local / nginx / conf:

remove server block server{} (if exist) in block html{} because we use server{} in default (config file in etc/nginx/site-available) which was included in nginx.conf.

3. แก้ไขไฟล์เริ่มต้นใน etc / nginx / site-available

location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; }

4. เริ่มบริการ nginx

sudo service nginx ทำการรีสตาร์ท

5. เริ่มบริการ php

บริการ php5-fpm เริ่มใหม่

6.enjoy

สร้างไฟล์ php ใด ๆ ใน / usr / share / nginx / html และเรียกใช้ใน "server_name / file_name.php" (server_name ขึ้นอยู่กับ config ของคุณ normaly คือ localhost, file_name.php เป็นชื่อไฟล์ที่สร้างขึ้นใน / usr / share / nginx / html)

ฉันใช้ Ubuntu 14.04


2

คำตอบข้างต้นดูเหมือนจะแสดงความคิดเห็นมากเกินไปสำหรับวิธีการแก้ปัญหาฉัน นี่คือสิ่งที่ไฟล์ของฉันดูเหมือนว่า:

/ etc / Nginx / เว็บไซต์ที่มีอยู่เริ่มต้น /

location ~ \.php$ {
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}

หวังว่านี่จะช่วยคนที่ผิดหวังในบ่ายวันอาทิตย์ (c:


2
server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /var/www/html;
    index index.php index.html index.htm;

    location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    }
}

ตัวอย่างด้านบนใช้ได้กับฉันในกรณีของ php7.2


1

สำหรับทุกคนที่มีปัญหาเดียวกันกับ PHP 7 นี่คือสิ่งที่ฉันทำเพื่อให้ nginx ดำเนินการไฟล์ php อย่างถูกต้องใน CentOS 7 โพสต์ที่นี่ดังนั้นในกรณีที่ทุกคนมีปัญหาเดียวกัน:

  • ทำตามขั้นตอนโดยขั้นตอนเอกสารนี้บนมหาสมุทรดิจิตอล

  • เปิด/etc/nginx/conf.d/default.conf(โดยค่าเริ่มต้นฉันไม่มีไซต์ที่เปิดใช้งานหรือไม่มีไซต์คุณสามารถแก้ไขได้)

  • แก้ไขlocationพารามิเตอร์ดังนี้:

default.conf :

location ~ \.php$ {
    try_files $uri =404;
    #fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;

    #instruct nginx execute php7 files instead download them :D
    fastcgi_pass unix:/var/run/php-fpm/www.sock;

    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}
  • เริ่มต้นใหม่ Nginx และ PHP บริการและsudo systemctl restart php-fpmsudo systemctl restart nginx

  • สุดท้าย แต่สำคัญที่สุดล้างแคชเบราว์เซอร์หรือทำงานในincognito (Chrome)หรือPrivate Browsing (Firefox)อื่น ๆ

หวังว่าการเข้ารหัสนี้เป็นประโยชน์และมีความสุข


1

ทางออกของฉันคือการเพิ่ม

    location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;

ไปยังไฟล์การกำหนดค่าที่กำหนดเองของฉันเช่น etc/nginx/sites-available/example.com.conf

การเพิ่มลงไป/etc/nginx/sites-available/defaultไม่ได้ผลสำหรับฉัน


1

ในกรณีของฉันฉันไม่ได้ใช้/etc/nginx/sites-available/defaultฉันกำลังใช้ไฟล์การกำหนดค่าบล็อกเซิร์ฟเวอร์ที่แตกต่างกัน (เช่น example.com) และวิธีเดียวที่ฉันสามารถแก้ไขปัญหานี้ได้คือการลบลิงก์สัญลักษณ์ไฟล์การกำหนดค่าบล็อกเซิร์ฟเวอร์เริ่มต้น:

$ rm /etc/nginx/sites-enabled/default

จากนั้นโหลด Nginx อีกครั้ง:

$ sudo systemctl reload nginx

1

ฉันแก้ไขปัญหาของฉันตอนนี้ด้วยรหัสนี้ (เปลี่ยน IP ของคุณ):

location / {
access_log off;
    log_not_found  off;
    client_max_body_size    2000m;
    client_body_buffer_size 512k;
    proxy_buffering on;
    proxy_send_timeout 300s;
    proxy_read_timeout 300s;
    proxy_buffer_size 64k;
    proxy_buffers 32 64k;
    proxy_busy_buffers_size 128k;
    proxy_temp_file_write_size 128k;
    proxy_connect_timeout 300s;
    proxy_http_version 1.1;
    proxy_set_header Range "";
    proxy_pass   https://123.123.123.123:444;
    proxy_set_header   Host   $host;
    proxy_set_header   X-Real-IP  $remote_addr;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Proto $scheme;
    proxy_redirect     off;
}

0

สิ่งที่ใช้ได้กับฉันกับ Ubuntu 16.04 และ php7 กำลังลบบรรทัดนี้

fastcgi_split_path_info ^(.+\.php)(/.+)$;

มันหยุดดาวน์โหลดไฟล์ php หลังจากนั้น


0

Uncomment ตำแหน่ง. php ใน / etc / nginx / sites-available / default

sudo vi / etc / nginx / sites-available / default:

location ~ \.php$ {
            include snippets/fastcgi-php.conf;

            # With php5-cgi alone:
    #       fastcgi_pass 127.0.0.1:9000;
            # With php5-fpm:
            fastcgi_pass unix:/var/run/php5-fpm.sock;
    }

0

หากสิ่งอื่นไม่ช่วยคุณ และก่อนหน้านี้คุณอาจติดตั้ง apache2 พร้อมไฟล์ทดสอบ info.php เพียงล้างข้อมูลแอป (แคชคุกกี้) สำหรับโลคัลโฮสต์


0

ตรวจสอบนามสกุลไฟล์กำหนดค่า nginx ของคุณคือ * .conf
ตัวอย่างเช่น: /etc/nginx/conf.d/myfoo.conf

ฉันได้รับสถานการณ์เดียวกัน หลังจากที่ฉันเปลี่ยนชื่อไฟล์กำหนดค่าของฉันจาก myfoo เป็น myfoo.conf ก็จะแก้ไขได้ อย่าลืมรีสตาร์ท nginx หลังจากเปลี่ยนชื่อ


0

ก่อนอื่นคุณต้องทำRemove cacheในเบราว์เซอร์ของคุณ

จากนั้นเปิดเทอร์มินัลแล้วเรียกใช้คำสั่งต่อไปนี้:

sudo apt-get install php-gettext
sudo nano /etc/nginx/sites-available/default

จากนั้นเพิ่มรหัสต่อไปนี้ในdefaultไฟล์:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.php index.html index.htm;

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.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;
    }
}

หากไม่ตรงกันเพียงแค่การแก้ไขและรีสตาร์ท Nginx จากเทอร์มินัลโดยคำสั่งต่อไปนี้

sudo systemctl รีสตาร์ท nginx

จากนั้นไปที่เบราว์เซอร์แล้วสนุก ...


0

สำหรับฉันมันคือบรรทัด: fastcgi_pass unix: /var/run/php5-fpm.sock;

ซึ่งจะต้องมีเพียง: fastcgi_pass unix: /run/php5-fpm.sock;


0

ฉันกำลังจะไปพยายามแก้ไขปัญหานี้สำหรับฉันปัญหาคือ Cloudflare ได้แคชไฟล์ php และทำให้ฉันดาวน์โหลดต่อไป

การแก้ไขสำหรับฉันคือการล้างแคชใน Cloudflare


คุณอาจจะต้องการบอกเราว่า?
Thorsten Staerk

0

ฉันได้รับปัญหาเดียวกันสิ่งที่แก้ไขมันเป็นบล็อกเซิร์ฟเวอร์นี้ยังมีบล็อกนี้อยู่เหนือบล็อกสถานที่อื่น ๆ ถ้าคุณมี CSS ไม่โหลดปัญหา ซึ่งฉันเพิ่มลงในไฟล์ conf ที่มีในไซต์ของฉัน

location ~ [^/]\.php(/|$) {
fastcgi_split_path_info  ^(.+\.php)(/.+)$;
fastcgi_index            index.php;
fastcgi_pass             unix:/var/run/php/php7.3-fpm.sock;
include                  fastcgi_params;
fastcgi_param   PATH_INFO       $fastcgi_path_info;
fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

0

ดังนั้นนี่คือสิ่งที่ในที่สุดทำงานในกรณีของฉันเป็นกฎการเขียนใหม่ที่ผู้ร้าย
ฉันเปลี่ยนกฎการเขียนใหม่ nginx ดังนี้ ..

   location /vendors { rewrite ^/vendors/?$ /vendors.php break; } 

กลายเป็น...

  location /vendors { rewrite ^/vendors/?$ /vendors.php last; }

เห็นได้ชัดว่าไม่มีคำหลักสุดท้ายคำขอไม่ได้รับการเริ่มต้นใหม่ดังนั้นจึงไม่เคยโดน.phpกลุ่มสถานที่และถูกตีความว่าเป็นการดาวน์โหลด -


0

สำหรับบันทึกฉันพบว่า php-fpm ของฉันไม่ทำงานและฉันแก้ไขด้วย service php7.2-fpm stop


0

อีกสิ่งหนึ่งที่ควรตรวจสอบ: หากคุณตั้งค่าการเข้าถึง HTTPS ก่อนตั้งค่า PHP - ฉันใช้ certbot - คุณจะต้องทำการเปลี่ยนแปลงใน / etc / nginx / sites-available / default สองครั้งเพราะจะมีสอง เซิร์ฟเวอร์บล็อก (หนึ่งพอร์ตสำหรับฟัง 80 และอีกพอร์ตหนึ่งฟังบนพอร์ต 443)

(ฉันตั้งค่าเซิร์ฟเวอร์นี้เป็นอีเมลหลักและไม่มีประโยชน์ใด ๆ กับ PHP เมื่อฉันติดตั้ง nginx ครั้งแรกเพื่อให้สามารถใช้ certbot ได้ง่ายขึ้น)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.