ข้อผิดพลาด nginx เชื่อมต่อกับ php5-fpm.sock ล้มเหลว (13: ปฏิเสธการอนุญาต)


290

ฉันจะอัพเดต Nginx เพื่อ1.4.7และ PHP เพื่อ5.5.12 , หลังจากนั้นฉันมีข้อผิดพลาด 502 ก่อนที่ฉันจะอัปเดตทุกอย่างทำงานได้ดี

Nginx-error.log

2014/05/03 13:27:41 [crit] 4202#0: *1 connect() to unix:/var/run/php5-fpm.sock failed (13: Permission denied) while connecting to upstream, client: xx.xxx.xx.xx, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "xx.xx.xx.xx"

nginx.conf

user  www www;
worker_processes  1;

        location / {
            root   /usr/home/user/public_html;
            index  index.php index.html index.htm;
        }
        location ~ [^/]\.php(/|$) {
            fastcgi_split_path_info ^(.+?\.php)(/.*)$;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param  SCRIPT_FILENAME    /usr/home/user/public_html$fastcgi_script_name;
            include fastcgi_params;
        }

3
รายงานข้อผิดพลาดนี้จะอธิบายว่าทำไมสิ่งนี้จึงเกิดขึ้น: bugs.php.net/bug.php?id=67060
Matt Cooper

1
ทุกคนมาที่นี่จากการอัปเกรดอูบุนตู 14 ถึง 16 คุณต้องเปลี่ยนถุงเท้าเป็นยูนิกซ์: /var/run/php/php7.0-fpm.sock
Karussell

คำตอบ:


626

ฉันมีข้อผิดพลาดคล้ายกันหลังจากอัปเดต PHP PHP แก้ไขข้อผิดพลาดด้านความปลอดภัยซึ่งoได้rwรับอนุญาตให้ใช้ไฟล์ซ็อกเก็ต

  1. เปิด/etc/php5/fpm/pool.d/www.confหรือ/etc/php/7.0/fpm/pool.d/www.confขึ้นอยู่กับรุ่นของคุณ
  2. ยกเลิกการคอมเมนต์บรรทัดการอนุญาตทั้งหมดเช่น:

    listen.owner = www-data
    listen.group = www-data
    listen.mode = 0660
  3. รีสตาร์ท fpm - sudo service php5-fpm restartหรือsudo service php7.0-fpm restart

หมายเหตุ : หากเว็บเซิร์ฟเวอร์ของคุณทำงานเป็นผู้ใช้อื่นที่ไม่ใช่ www-data คุณจะต้องอัปเดตwww.confไฟล์ตามนั้น


11
เนื่องจากนี่ทำให้ซ็อกเก็ตสามารถเขียนได้กับทุกคนอย่างฉันไม่สามารถช่วยได้ แต่คิดว่านี่เป็นทางออกที่น่ากลัว
Shadur

11
วิธีนี้จะกู้คืนการกำหนดค่าเริ่มต้นที่ไม่ปลอดภัยที่ได้รับการแก้ไขในbugs.php.net/bug.php?id=67060 - พิจารณาแทนการแก้ไข Listen.owner ที่แนะนำโดย artooro
Chris Burgess

2
สับสนมาก ทำไมไม่แก้ไขคำตอบของคุณให้ถูกต้อง (ไปที่ / etc ... ) จากนั้นแสดงความคิดเห็นเกี่ยวกับวิธีที่มีวิธีที่ปลอดภัยน้อยกว่าที่จะทำงานจนกว่าจะรีบูตเท่านั้น (ไปที่ / var / .. )
SamGoody

1
@Tecnocat ทำไมมันถึงปลอดภัยน้อยกว่า? ฉันคิดว่าพวกเขาเหมือนกัน www-data และ 660 ดังนั้นฉันไม่เข้าใจว่าเกิดอะไรขึ้น
แซนเดอร์

13
sudo usermod -aG www-data nginxอนุญาตให้ nginx เข้าถึงไฟล์
AnthumChris

107

การแก้ไขทั้งหมดที่กล่าวถึงในที่นี้โดยทั่วไปจะเปิดใช้งานช่องโหว่ด้านความปลอดภัยอีกครั้ง

สิ่งที่ฉันทำคือการเพิ่มบรรทัดต่อไปนี้ไปยังไฟล์การกำหนดค่า PHP-FPM ของฉัน

listen.owner = www-data
listen.group = www-data

ตรวจสอบให้แน่ใจว่าข้อมูล www เป็นข้อมูลจริงที่ผู้ใช้งาน nginx ทำงานอยู่ สำหรับเดเบียนก็คือข้อมูล www โดยค่าเริ่มต้น

ทำวิธีนี้ไม่ได้เปิดใช้งานปัญหาด้านความปลอดภัยว่าการเปลี่ยนแปลงนี้ก็ควรที่จะแก้ไข


16
ในการตรวจสอบชื่อผู้ใช้ nginxps aux|grep nginx
SamGoody

2
บน Ubuntu ที่ /etc/php5/fpm/php.ini
ความเป็นจริง

1
@RealityExtractor ฉันไม่คิดอย่างนั้น ไฟล์นั้นมีการตั้งค่า PHP ทั่วไปเท่านั้นไม่มีอะไรเกี่ยวข้องกับตัวจัดการกระบวนการ FPM
Martijn Heemels

4
สำหรับฉันฉันยังต้องลบด้วยตนเองเพราะมันถูกสร้างขึ้นแล้วโดย/var/run/php5-fpm.sock www-dataแค่หัวขึ้น ...
Giel Berkers

1
นี่คือการแก้ไขที่เหมาะสมความปลอดภัยที่ชาญฉลาด
jschorr

45

วิธีการแก้ปัญหาของ Xander ใช้งานได้ แต่ไม่คงอยู่หลังจากรีบูต

ฉันพบว่าฉันมีการเปลี่ยนแปลงlisten.modeไปใน0660 /etc/php5/fpm/pool.d/www.conf

ตัวอย่างจาก www.conf:

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. 
; Default Values: user and group are set as the running user
;                 mode is set to 0660
;listen.owner = www-data
;listen.group = www-data
;listen.mode = 0660

แก้ไข: สำหรับ @Chris Burgess ฉันได้เปลี่ยนวิธีนี้เป็นวิธีที่ปลอดภัยยิ่งขึ้น

ฉันลบความคิดเห็นสำหรับ Listen.mode, .group และ. เจ้าของ:

listen.owner = www-data
listen.group = www-data
listen.mode = 0660

/ var / run เก็บเฉพาะข้อมูลเกี่ยวกับระบบที่ใช้งานอยู่ตั้งแต่การบู๊ตครั้งล่าสุดเช่นผู้ใช้ที่เข้าสู่ระบบในปัจจุบันและใช้ daemons ( http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard#Directory_structure )

หมายเหตุด้านข้าง:

php5-fpm -vรายงานของฉัน: PHP 5.4.28-1+deb.sury.org~precise+1. ปัญหานี้เกิดขึ้นหลังจากอัพเดตล่าสุดเช่นกัน


5
วิธีนี้จะกู้คืนการกำหนดค่าเริ่มต้นที่ไม่ปลอดภัยที่ได้รับการแก้ไขในbugs.php.net/bug.php?id=67060 - พิจารณาแทนการแก้ไข Listen.owner ที่แนะนำโดย artooro
Chris Burgess

หากlisten.acl_groupsมีการตั้งค่าlisten.ownerและlisten.groupจะถูกละเว้น ฉันตั้งค่าlisten.acl_groups =แล้วปัญหา 502 / สิทธิ์ก็หายไป พบว่าหลังจาก uncommenting listen.เส้นดังกล่าวเป็นปัญหา 502 ยืนยันและแสดงให้เห็นว่าคำเตือนsystemctl status php-fpm WARNING: [pool www] ACL set, listen.owner = 'nobody' is ignored
idoimaging

37

หากคุณลองทุกอย่างในโพสต์นี้ แต่ไม่ประสบความสำเร็จในการทำให้ PHP ทำงานนี่คือสิ่งที่แก้ไขได้สำหรับกรณีของฉัน:

ตรวจสอบให้แน่ใจว่าคุณไม่มีบรรทัดเหล่านี้ใน /etc/php5/fpm/pool.d/www.conf:

listen.owner = www-data
listen.group = www-data
listen.mode = 0660

ตรวจสอบให้แน่ใจ / etc / nginx / fastcgi_params เป็นดังนี้:

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  PATH_INFO          $fastcgi_script_name;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

สองบรรทัดนี้หายไปจาก / etc / nginx / fastcgi_params ของฉันตรวจสอบให้แน่ใจว่าพวกเขาอยู่ที่นั่น!

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  PATH_INFO          $fastcgi_script_name;

จากนั้นเริ่ม php5-fpm และ nginx ควรทำเคล็ดลับ


2
ขอบคุณมาก! ฉันสูญเสียความหวังทั้งหมดนี่ช่วยลาของฉัน
Diego Castro

1
คุณคือฮีโร่ของฉันคุณช่วยชีวิต!
jeppeb

1
ไม่มีคำพูดใดที่สามารถอธิบายได้ว่าฉันรู้สึกขอบคุณแค่ไหน! หลังจากอัปเดตแพ็คเกจทุกอย่างไปแล้วและสิ่งนี้ช่วยได้ทั้งวัน
Nikola Prokopić

ฉันต้องการให้คุณมากกว่าหนึ่ง +
g9m29

28

ในความเป็นจริง "Listen.mode" ควรเป็น: "0660" และไม่ใช่ "0666" เนื่องจาก Other Writable หรือ Other Readable ไม่เคยเป็นทางเลือกที่ดีเลย

ดังนั้นลองค้นหาว่าผู้ใช้ / กลุ่มเว็บเซิร์ฟเวอร์ของคุณทำงานเป็นอย่างไร ฉันใช้ CentOs และมันทำงานเป็นผู้ใช้ "nginx" ดังนั้นเพิ่ม php-fpm.conf ของคุณ:

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

ในที่สุดก็เริ่ม php-fpm


สำหรับสิ่งที่มันคุ้มค่าในระบบ Ubuntu 12.04 www-dataของฉันผู้ใช้และกลุ่ม
แบรด

1
สำหรับฉันใน CentOS มันทำงานเพื่อตั้งผู้ใช้เป็น "none" และกลุ่มเป็น "nginx" อาจไม่ใช่การปรับปรุงที่สำคัญ แต่ฉันต้องการให้สิทธิ์แบบ จำกัด เท่าที่จะทำได้
Kzqai

23

ตรวจสอบผู้ใช้ที่เรียกใช้ nginx ตั้งแต่ Ubuntu 12.04 nginx ทำงานโดยผู้ใช้ nginx ซึ่งไม่ได้เป็นสมาชิกของกลุ่ม www-data

usermod -a -G www-data nginx

และการรีสตาร์ท nginx และ php5-fpm daemons แก้ปัญหาได้


การแก้ไขนี้น่าจะปลอดภัยและฉลาดที่สุด ทำงานบน Ubuntu 14.04, Nginx 1.7.10, PHP 5.5.9-1ubuntu4.6 (fpm-fcgi)
AnthumChris

12

ทางเลือกในการขยายการอนุญาตในการกำหนดค่า php ของคุณคุณสามารถเปลี่ยนผู้ใช้ที่ระบุในการกำหนดค่า nginx ของคุณ

ในบรรทัดแรกของข้อความที่ตัดตอนมา nginx.conf ของคุณผู้ใช้และกลุ่มจะถูกระบุเป็น www และ www ตามลำดับ

user  www www;

ในขณะเดียวกันการกำหนดค่า php ของคุณอาจระบุผู้ใช้และกลุ่ม www-data:

listen.owner = www-data
listen.group = www-data

คุณอาจเปลี่ยนบรรทัดใน nginx.conf ของคุณเป็นอย่างใดอย่างหนึ่งต่อไปนี้จากนั้น:

user www-data www;
user www-data www-data; # or any group, really, since you have the user matching
user www www-data; # requires that your php listen.mode gives rw access to the group

ขอบคุณมาก!
Aline Matos

ขอบคุณมาก! จำเป็นต้องเปลี่ยน nginx.conf
LCB

7

การพิจารณาจะต้องมอบให้กับกลุ่ม FPM ส่วนตัวของคุณด้วยถ้ามี

ฉันไม่สามารถเข้าใจได้ว่าทำไมวันนี้จึงไม่มีคำตอบใดที่เหมาะกับฉัน นี่เป็นสถานการณ์แบบ set-and-forget สำหรับฉันที่ฉันลืมไปว่า Listen.user และ Listen.group ทำซ้ำตามพื้นฐานของแต่ละกลุ่ม

หากคุณใช้พูลสำหรับบัญชีผู้ใช้ที่แตกต่างกันอย่างที่ฉันเคยทำซึ่งแต่ละบัญชีผู้ใช้เป็นเจ้าของกระบวนการ FPM และซ็อกเก็ตของพวกเขาการตั้งค่าเฉพาะตัวเลือกเริ่มต้น Listen.owner และ Listen.group เป็น 'nginx' จะไม่ทำงาน และแน่นอนว่าการปล่อยให้ 'nginx' เป็นเจ้าของพวกเขาทั้งหมดนั้นไม่เป็นที่ยอมรับเช่นกัน

สำหรับแต่ละพูลตรวจสอบให้แน่ใจว่า

listen.group = nginx

มิฉะนั้นคุณสามารถทิ้งความเป็นเจ้าของสระว่ายน้ำไว้คนเดียวได้


ขอบคุณ. หาก Ngnix ใช้งานได้กับบัญชีผู้ใช้ที่แตกต่างกันควรเปลี่ยนเช่น "Listen.group = nginx"
MURATSPLAT

6

ฉันเพียงแค่มีข้อผิดพลาดนี้อีกครั้งในวันนี้เป็นฉันปรับปรุงเครื่องของฉัน (กับการปรับปรุงสำหรับ PHP) ที่ทำงานUbuntu 14.04 ไฟล์กำหนดค่าการกระจาย/etc/php5/fpm/pool.d/www.confนั้นใช้ได้และไม่ต้องการการเปลี่ยนแปลงใด ๆ ในขณะนี้

ฉันพบข้อผิดพลาดต่อไปนี้:

dmesg | grep php
[...]
[ 4996.801789] traps: php5-fpm[23231] general protection ip:6c60d1 sp:7fff3f8c68f0 error:0 in php5-fpm[400000+800000]
[ 6788.335355] traps: php5-fpm[9069] general protection ip:6c5d81 sp:7fff98dd9a00 error:0 in php5-fpm[400000+7ff000]

สิ่งที่แปลกคือฉันมีเว็บไซต์ 2 แห่งที่ใช้ PHP-FPM ในเครื่องนี้ทำงานได้ดีและอีกอัน (การติดตั้ง Tiny Tiny RSS) ทำให้ฉันมี 502 ซึ่งทั้งคู่ทำงานได้ดีมาก่อนก่อน

ฉันเปรียบเทียบทั้งไฟล์กำหนดค่าและพบว่าfastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;ไม่มีไซต์ที่ได้รับผลกระทบ

ตอนนี้ทั้งไฟล์การกำหนดค่ามีบล็อกต่อไปนี้และทำงานได้ดีอีกครั้ง:

location ~ \.php$ {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        include /etc/nginx/snippets/fastcgi-php.conf;
}

ปรับปรุง

ควรสังเกตว่า Ubuntu จัดส่งไฟล์พารามิเตอร์ fastcgi ที่เกี่ยวข้องสองไฟล์และตัวอย่างข้อมูลการกำหนดค่าที่มีให้ตั้งแต่ Vivid และPPAเวอร์ชัน โซลูชันได้รับการอัพเดตตามนั้น

ส่วนต่างของไฟล์พารามิเตอร์ fastcgi:

$ diff -up fastcgi_params fastcgi.conf
--- fastcgi_params      2015-07-22 01:42:39.000000000 +0200
+++ fastcgi.conf        2015-07-22 01:42:39.000000000 +0200
@@ -1,4 +1,5 @@

+fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
 fastcgi_param  QUERY_STRING       $query_string;
 fastcgi_param  REQUEST_METHOD     $request_method;
 fastcgi_param  CONTENT_TYPE       $content_type;

ตัวอย่างการกำหนดค่าใน /etc/nginx/snippets/fastcgi-php.conf

# regex to split $uri to $fastcgi_script_name and $fastcgi_path
fastcgi_split_path_info ^(.+\.php)(/.+)$;

# Check that the PHP script exists before passing it
try_files $fastcgi_script_name =404;

# Bypass the fact that try_files resets $fastcgi_path_info
# see: http://trac.nginx.org/nginx/ticket/321
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;

fastcgi_index index.php;
include fastcgi.conf;

3
ขอบคุณมาก. ผมมีปัญหาเดียวกัน. มันแปลกที่ในแพ็คเกจไม่รวมบรรทัดนี้ ฉันเพิ่งเพิ่มไปยัง / etc / nginx / fastcgi_params และทำงานได้อีกครั้งในขณะนี้
Bukashk0zzz

5

การแก้ไขแบบง่าย ๆ ต่อไปนี้ใช้ได้กับฉันโดยหลีกเลี่ยงปัญหาการอนุญาตที่เป็นไปได้กับซ็อกเก็ต

ในการกำหนดค่า nginx ของคุณให้ตั้ง fastcgi_pass เป็น:

fastcgi_pass   127.0.0.1:9000;

แทน

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

สิ่งนี้จะต้องตรงกับพารามิเตอร์ Listen = ใน /etc/php5/fpm/pool.d/www.conf ดังนั้นให้ตั้งเป็น:

listen = 127.0.0.1:9000;

จากนั้นรีสตาร์ท php5-fpm และ nginx

service php5-fpm restart

และ

service nginx restart

สำหรับข้อมูลเพิ่มเติมโปรดดู: https://wildlyinaccurate.com/solving-502-bad-gateway-with-nginx-php-fpm/


ในขณะที่สิ่งนี้อาจเพิ่มขึ้นและไปได้มันไม่ได้เป็นทางออกสำหรับการแก้ไขปัญหาถุงเท้า
Chris

5

ปัญหาในกรณีของฉันคือเว็บเซิร์ฟเวอร์ Nginx ทำงานในฐานะผู้ใช้ nginx และกลุ่มทำงานในฐานะผู้ใช้ www-data

ฉันแก้ไขปัญหาโดยการเปลี่ยนผู้ใช้ Nginx กำลังทำงานอยู่ใน/etc/nginx/nginx.confไฟล์ (อาจแตกต่างกันในระบบของคุณฉันเป็น Ubuntu 16.04.1)

เปลี่ยนแปลง: user nginx;

ถึง: user www-data;

จากนั้นรีสตาร์ท Nginx: service nginx restart


4

เรียบง่าย แต่ใช้งานได้ ..

listen.owner = nginx
listen.group = nginx

chown nginx:nginx /var/run/php-fpm/php-fpm.sock

ตามที่ฉันเข้าใจแล้วสิ่งนี้จะไม่สามารถรีบูตได้ดังนั้นจึงเป็นการแก้ไขชั่วคราวมากกว่า
Chris

4

ฉันได้แก้ไขปัญหาเดียวกันใน Amazon Linux AMI 2016.09 (Centos 7) โดยทำตามขั้นตอนต่อไปนี้

เปิดไฟล์www.confของคุณ(ตัวอย่าง: sudo nano /etc/php-fpm.d/www.conf) สุดท้ายค้นหาบรรทัดที่ตั้งค่า Listen.owner และ Listen.group และเปลี่ยนค่าจาก "none" เป็น "nginx" ":

listen.owner = nginx
listen.group = nginx
listen.mode = 0666

สุดท้ายหาบรรทัดที่ตั้งค่าผู้ใช้และกลุ่มและเปลี่ยนค่าจาก "apache" เป็น "nginx":

user = nginx
group = nginx

รีสตาร์ท php-fpm (บริการ sudo รีสตาร์ท php-fpm)


2
ใช้ 660 แทน 666 666 ไม่ปลอดภัยและได้รับการแก้ไขโดยโปรแกรมแก้ไขข้อบกพร่อง
Xander

3

สิ่งที่สำคัญที่สุดคือผู้ใช้ที่ใช้ nginx แล้วคุณต้องระบุด้วย

ใน nginx.conf ของคุณ

user www-data;
worker_processes  1;

        location / {
            root   /usr/home/user/public_html;
            index  index.php index.html index.htm;
        }
        location ~ [^/]\.php(/|$) {
            fastcgi_split_path_info ^(.+?\.php)(/.*)$;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param  SCRIPT_FILENAME    /usr/home/user/public_html$fastcgi_script_name;
            include fastcgi_params;
        }

ใน www.conf ของคุณ

listen.owner = www-data
listen.group = www-data
;listen.mode = 0660

ในกรณีของคุณผู้ใช้และกลุ่มคือ "www" ดังนั้นเพียงแค่แทนที่มัน

  • รีสตาร์ท nginx และ php fpm

2

หากคุณมีพูลต่างกันต่อผู้ใช้ตรวจสอบให้แน่ใจว่าได้ตั้งค่าผู้ใช้และกลุ่มอย่างถูกต้องในไฟล์กำหนดค่า คุณสามารถค้นหาผู้ใช้ nginx ในไฟล์ /etc/nginx/nginx.conf กลุ่ม nginx เหมือนกับผู้ใช้ nginx

user = [pool-user]
group = [pool-group]
listen.owner = [nginx-user]
listen.group = [nginx-group]

2

ตรวจสอบ SELINUX (/ etc / selinux) ด้วย:

# getenforce

ปิดมัน:

# setenforce 0

1
คุณไม่ควรเลือกที่จะลดความปลอดภัยของระบบเพื่อให้ทำงานได้ดีกว่าใช้ตัวเลือกใดตัวเลือกหนึ่งในคำตอบอื่น ๆ ในการแก้ปัญหาของคุณ อย่าปิดการใช้งาน selinux โดยไม่มีเหตุผลอันสมควรที่จะทำเช่นนั้น!
SlyDave

2

ในกรณีของฉัน php-fpm ไม่ทำงานเลยดังนั้นฉันต้องเริ่มบริการ😂

service php7.3-fpm start
#on ubuntu 18.04

2

เพียงแค่ดู/etc/php5/php-fpm.conf pid = /var/run/php5-fpm.pidไฟล์ IS PID

ในไฟล์ /etc/php5/fpm/pool.d/www.conf

listen = /var/run/php5-fpm.sock เป็นไฟล์ SOCKET

หากคุณ pid เท่ากับฟัง ( pid = /var/run/php5-fpm.sock and listen = /var/run/php5-fpm.sock) -> การตั้งค่าผิดและเสร็จสิ้น/etc/php5/fpm/pool.d/www.conf

user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

2

ฉันมีข้อผิดพลาดที่คล้ายกัน

คำแนะนำทั้งหมดไม่ได้ช่วย

www-data ทดแทนเพียงตัวเดียวที่มี nginx ได้ช่วย:

$ sudo chmod nginx:nginx /var/run/php/php7.2-fpm.sock

/var/www/php/fpm/pool.d/www.conf

user = nginx
group = nginx
...
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

สวัสดี @Alexander คุณต้องใช้คำสั่ง chown เพื่อเปลี่ยนเจ้าของเป็น nginx มันช่วยฉันได้มากจริงๆ
Pratik Ghela

1

เพียงเพิ่มใน CentOS (และอาจ Red Hat และ Fedora) ไฟล์เพื่อเปลี่ยนการอนุญาตเป็น:

/etc/php-fpm.d/www.conf


1

หลังจากอัปเกรดจาก Ubuntu 14.04 lts เป็น Ubuntu 16.04 lts ฉันพบสาเหตุอีกประการหนึ่งสำหรับข้อผิดพลาดที่ฉันไม่เคยเห็นมาก่อน

ในระหว่างกระบวนการอัปเกรดฉันทำ php5-fpm ที่รันได้ทั้งหมดของฉันหายไป ไฟล์กำหนดค่าทั้งหมดยังคงอยู่และฉันต้องใช้เวลาสักพักกว่าจะรู้ว่าservice php5-fpm startว่าไม่ได้เริ่มต้นกระบวนการจริงๆเพราะมันไม่ได้แสดงข้อผิดพลาดใด ๆ

ช่วงเวลาที่ฉันตื่นขึ้นคือเมื่อฉันสังเกตเห็นว่าไม่มีไฟล์ซ็อกเก็ต/var/run/php5-fpm.sockอย่างที่ควรจะเป็นและไม่ได้netstat -anแสดงกระบวนการที่ฟังพอร์ตที่ฉันลองเป็นทางเลือกในขณะที่พยายามแก้ปัญหานี้ เนื่องจากไฟล์ / usr / sbin / php5-fpm นั้นไม่มีอยู่ด้วยในที่สุดฉันก็มาถูกทางแล้ว

เพื่อที่จะแก้ปัญหานี้ฉันอัพเกรด php จากเวอร์ชั่น 5.5 เป็น 7.0 apt-get install php-fpmทำกลอุบายเป็นผลข้างเคียง หลังจากนั้นและติดตั้งแพ็คเกจที่จำเป็นอื่น ๆ ทุกอย่างกลับมาเป็นปกติ


วิธีการอัปเกรดนี้อาจมีปัญหาของตัวเองอย่างไร เนื่องจาก php มีการพัฒนาค่อนข้างน้อยจึงเป็นไปได้ว่าซอฟต์แวร์จะแตกเป็นไปไม่ได้ ดังนั้นแม้ว่าฉันจะลงไปที่เส้นทางนั้นคุณอาจต้องการให้เวอร์ชันที่คุณชื่นชอบอยู่นานขึ้น

โชคดีที่ดูเหมือนว่าจะเป็นวิธีที่เรียบร้อยตามที่อธิบายไว้ในไซต์ปรับแต่ง Windows:

add-apt-repository ppa:ondrej/php
apt-get purge php5-common
apt-get update
apt-get install php5.6

วิธีแก้ปัญหาที่ไม่ดีเท่าที่ควรฉันไม่ได้ลอง ฉันคาดว่าอีกสองสามวันข้างหน้าจะบอกฉันว่าฉันควรจะมี


0

ฉันเปลี่ยนระบบปฏิบัติการบนเซิร์ฟเวอร์ของฉันสองสามครั้งเพื่อให้ได้ระบบที่สะดวกสบายที่สุด

มันใช้งานได้ดีเกือบตลอดเวลา แต่ในที่สุดฉันก็ได้รับข้อผิดพลาด 502 Gateway นี้

ฉันใช้ซ็อกเก็ต php fpm สำหรับแต่ละบัญชีแทนที่จะใช้ซ็อกเก็ตเดียวกันทั้งหมด ดังนั้นหากเกิดปัญหาหนึ่งแอปพลิเคชั่นอื่นก็ยังคงทำงานต่อไป

ฉันเคยมีผู้ใช้และกลุ่ม www-data แต่สิ่งนี้เปลี่ยนไปใน Debian 8 ด้วย Nginx 1.8 และ php5-fpm ล่าสุด

ผู้ใช้เริ่มต้นคือ nginx และเป็นกลุ่ม วิธีนี้เป็นวิธีที่ดีที่สุดคือตรวจสอบไฟล์ / etc / group และ / etc / passwd สิ่งเหล่านี้ไม่สามารถโกหกได้

มันอยู่ที่นั่นฉันพบว่าตอนนี้ฉันมี nginx ทั้งในและไม่มี www-data อีกต่อไป

อาจช่วยให้บางคนยังพยายามค้นหาสาเหตุที่ข้อความแสดงข้อผิดพลาดปรากฏขึ้น

มันใช้งานได้สำหรับฉัน


0

สำหรับผู้ที่พยายามทุกอย่างในชุดข้อความนี้และยังคงติดอยู่: นี่เป็นการแก้ไขปัญหาของฉัน ฉันอัปเดต /usr/local/nginx/conf/nginx.conf

  1. Uncomment บรรทัดที่พูด user

  2. ทำให้www-dataมันกลายเป็น:user www-data;

  3. บันทึก (จำเป็นต้องเข้าถึงรูท)

  4. รีสตาร์ท nginx


0

หากคุณมีการประกาศ

pid = /run/php-fpm.pid

และ

Listen = /run/php-fpm.pid

ในไฟล์คอนฟิกูเรชันที่ต่างกันจากนั้นรูทจะเป็นเจ้าของไฟล์นี้

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