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
मैट कूपर

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-डेटा के अलावा उपयोगकर्ता के रूप में चलता है, तो आपको www.confतदनुसार फाइल को अपडेट करना होगा


11
यह देखते हुए कि यह सॉकेट को पूरी तरह से हर किसी के लिए योग्य बनाता है, मैं मदद नहीं कर सकता, लेकिन लगता है कि यह एक भयानक समाधान है।
शादुर

11
यह दृष्टिकोण बगसफेप.नेट / बीबग। एफपी?id= 67060 में हल किए गए असुरक्षित डिफ़ॉल्ट कॉन्फ़िगरेशन को पुनर्स्थापित करता है - इसके बजाय इस पर विचार करें कि आर्टूरो द्वारा सुझाए गए सुनो.नियर फिक्स।
क्रिस बर्गेस

2
बहुत ज्यादा उलझन। अपने उत्तर को सही होने के लिए संपादित क्यों नहीं करें, (Go to / etc ...) और फिर बाद में इस बारे में टिप्पणी करें कि कैसे कम सुरक्षित तरीका है जो केवल रिबूट तक काम करता है (Go / to / var / ..)।
सामगुडी

1
@Tecnocat यह कम सुरक्षित क्यों है? मुझे लगता है कि वे समान हैं। www-data और 660. तो, मुझे समझ नहीं आया कि क्या गलत है?
Xander

13
sudo usermod -aG www-data nginxफाइल को एक्सेस करने की अनुमति देता है
एंथुमक्रिस

107

वर्तमान में यहां बताए गए सभी सुधार मूल रूप से सुरक्षा छेद को फिर से सक्षम करते हैं।

मैंने जो कुछ किया वह मेरी PHP-FPM कॉन्फ़िगरेशन फ़ाइल में निम्नलिखित पंक्तियों को जोड़ रहा है।

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

सुनिश्चित करें कि www-data वास्तव में उपयोगकर्ता है जो nginx कार्यकर्ता के रूप में चल रहा है। डेबियन के लिए यह डिफ़ॉल्ट रूप से www-data है।

इस तरह से करना सुरक्षा समस्या को सक्षम नहीं करता है जिसे यह परिवर्तन ठीक करना था


16
ps aux|grep nginx
नेगनेक्स

2
उबंटू में /etc/php5/fpm/php.ini पर
रियलिटी एक्सट्रैक्टर

1
@RealityExtractor मुझे ऐसा नहीं लगता। उस फ़ाइल में केवल सामान्य PHP सेटिंग्स होती हैं, जो एफपीएम प्रक्रिया प्रबंधक से संबंधित कुछ भी नहीं है।
मार्टिज़न हेमेल्स

4
मेरे लिए, मुझे मैन्युअल रूप से हटाना पड़ा /var/run/php5-fpm.sock, क्योंकि यह पहले से ही बनाया गया था www-data। बस एक सिर-ऊपर ...
Giel Berkers

1
यह उचित निर्धारण, सुरक्षा-वार है।
१५:५

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

संपादित करें: प्रति @ क्रिस बर्गेस, मैंने इसे और अधिक सुरक्षित विधि में बदल दिया है।

मैंने Listen.mode, .group और .owner के लिए टिप्पणी को हटा दिया:

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

/ var / run केवल अंतिम बूट के बाद से चल रहे सिस्टम के बारे में जानकारी रखता है, उदाहरण के लिए, वर्तमान में लॉग-इन उपयोगकर्ता और रनिंग डेमॉन। ( http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard#Directory_structure )।

पक्षीय लेख:

मेरे php5-fpm -vरिपोर्ट: PHP 5.4.28-1+deb.sury.org~precise+1। मुद्दा हाल ही में अपडेट के बाद भी हुआ।


5
यह दृष्टिकोण बगसफेप.नेट / बीबग। एफपी?id= 67060 में हल किए गए असुरक्षित डिफ़ॉल्ट कॉन्फ़िगरेशन को पुनर्स्थापित करता है - इसके बजाय इस पर विचार करें कि आर्टूरो द्वारा सुझाए गए सुनो.नियर फिक्स।
क्रिस बर्गेस

यदि listen.acl_groupsसेट किया गया है, listen.ownerऔर listen.groupअनदेखा किया गया है। मैंने सेट किया listen.acl_groups =, फिर 502 / अनुमतियों की समस्या दूर हो गई। listen.ऊपर की तरह लाइनों को अनियंत्रित करने के बाद मिला , 502 समस्या बनी रही और systemctl status php-fpmचेतावनी दिखाई गई WARNING: [pool www] ACL set, listen.owner = 'nobody' is ignored
निष्क्रिय करना

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
आपको बहुत - बहुत धन्यवाद! मैं अपनी सारी उम्मीदें खो रहा था, इससे मेरी गांड बच गई।
डिएगो कास्त्रो

1
आप मेरे हीरो हैं, आपने दिन बचा लिया!
जेपिब

1
ऐसे कोई शब्द नहीं हैं जो यह वर्णन कर सकें कि मैं कितना आभारी हूं! पैकेजों को अपडेट करने के बाद सबकुछ कपट में चला गया और इससे दिन बच गया।
निकोला प्रोकोपीव

मैं आप एक से अधिक + देना चाहता हूँ
g9m29

28

वास्तव में, "सुनो.मोड" होना चाहिए: "0660" और अन्य लेखन योग्य या अन्य पठनीय के रूप में "0666" यहां एक अच्छा विकल्प नहीं है।

इसलिए यह जानने की कोशिश करें कि आपका वेबसर्वर कौन सा उपयोगकर्ता / समूह चलाता है। मैं CentOs का उपयोग करता हूं और यह उपयोगकर्ता के रूप में चलता है "nginx" तो अपने php-fpm.conf में जोड़ें:

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

अंत में php-fpm को पुनः आरंभ करें


मेरे उबंटू 12.04 सिस्टम पर, यह लायक है, उपयोगकर्ता और समूह हैं www-data
ब्रैड

1
मेरे लिए CentOS में, उसने उपयोगकर्ता को "कोई नहीं" और समूह को "नगनेक्स" के रूप में सेट करने के लिए काम किया। शायद एक बड़ा सुधार नहीं है, लेकिन मैं यथासंभव सीमित अनुमति देना पसंद करूंगा।
Kzqai

23

जांचें कि कौन सा उपयोगकर्ता nginx चलाता है। Ubuntu 12.04 के रूप में nginx nginx उपयोगकर्ता द्वारा चलता है जो www-data समूह का सदस्य नहीं है।

usermod -a -G www-data nginx

और nginx और php5-fpm डेमॉन को पुनरारंभ करने से समस्या हल हो जाती है।


यह फिक्स सबसे साफ, सुरक्षा वार लगता है। Ubuntu 14.04, Nginx 1.7.10, PHP 5.5.9-1ubuntu4.6 (fpm-fcgi) पर काम किया
AnthumChris

12

आपके php config में व्यापक अनुमति के विकल्प, आप अपने nginx config में निर्दिष्ट उपयोगकर्ता को बदल सकते हैं।

ऊपर आपके nginx.conf अंश की पहली पंक्ति पर, उपयोगकर्ता और समूह क्रमशः www और www के रूप में निर्दिष्ट किए गए हैं।

user  www www;

इस बीच, आपका php config शायद 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

आपका बहुत बहुत धन्यवाद!
अलाइन माटोस

आपका बहुत बहुत धन्यवाद! Nginx.conf को बदलना आवश्यक है।
एलसीबी

7

अपने व्यक्तिगत FPM पूल, यदि कोई हो, पर भी ध्यान दिया जाना चाहिए।

मैं यह पता नहीं लगा सका कि इनमें से कोई भी उत्तर आज मेरे लिए काम क्यों नहीं कर रहा है। यह मेरे लिए एक सेट-एंड-भूल परिदृश्य था, जहां मैं यह भूल गया था कि सुनो.सुमेर और सुनो.ग्रुप को प्रति-पूल आधार पर डुप्लिकेट किया गया था।

यदि आपने अलग-अलग उपयोगकर्ता खातों के लिए तालिकाओं का उपयोग किया है जैसे मैंने किया, जहां प्रत्येक उपयोगकर्ता खाता अपने FPM प्रक्रियाओं और सॉकेट्स का मालिक है, तो केवल डिफ़ॉल्ट Listen.owner की सेटिंग करें और 'nginx' के लिए Listen.group कॉन्फ़िगरेशन विकल्प बस काम नहीं करेंगे। और जाहिर है, 'नग्नेक्स' को खुद के लिए भी स्वीकार्य नहीं है।

के लिए प्रत्येक पूल , सुनिश्चित करें कि

listen.group = nginx

अन्यथा, आप पूल के स्वामित्व और ऐसे अकेले छोड़ सकते हैं।


धन्यवाद। यदि Ngnix अलग-अलग उपयोगकर्ता खातों के लिए काम करता है, तो इसे "Listen.group = nginx" की तरह बदल दिया जाना चाहिए
MURATSPLAT

6

मुझे यह त्रुटि आज फिर से मिली क्योंकि मैंने Ubuntu 14.04 पर चलने वाली अपनी मशीन (PHP के लिए अपडेट के साथ) अपडेट की । वितरण कॉन्फ़िगरेशन फ़ाइल/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 का उपयोग करती हैं एक ठीक चल रहा था और दूसरे (एक टिनी टिनी आरएसएस इंस्टॉलेशन) ने मुझे 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;
}

अपडेट करें

यह ध्यान दिया जाना चाहिए कि उबंटू जहाज दो फास्टकेगी संबंधित पैरामीटर फ़ाइलों को और एक कॉन्फ़िगरेशन स्निपेट को भी प्रदान करता है जो विविड के बाद से और पीपीए में भी उपलब्ध है। संस्करण । समाधान तदनुसार अद्यतन किया गया था।

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 में जोड़ता हूं और सभी अब फिर से काम करता हूं।
बुक्शक्ज़्ज़ज़

5

निम्नलिखित साधारण फिक्स ने मेरे लिए काम किया, सॉकेट के साथ संभावित अनुमतियों के मुद्दों को दरकिनार किया।

अपने nginx कॉन्फ़िगरेशन में, fastcgi_pass को इसके लिए सेट करें:

fastcgi_pass   127.0.0.1:9000;

के बजाय

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

यह /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/solve-502-bad-gateway-with-nginx-php-fpm/


हालांकि यह एक हो सकता है और जा रहा है, यह एक जुर्राब मुद्दे को ठीक करने के लिए एक समाधान नहीं है।
क्रिस

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

जैसा कि मैं समझता हूं, यह एक रिबूट नहीं बचेगा, इसलिए यह एक अस्थायी सुधार है।
क्रिस

4

मैंने निम्नलिखित कदम उठाकर Amazon Linux AMI 2016.09 (Centos 7) पर एक ही मुद्दा तय किया है।

अपनी www.conf फाइलें खोलें (उदाहरण: sudo nano /etc/php-fpm.d/www.conf) अंतिम रूप से, लाइन्स को सेट करें जो सुनते हैं। सुनें और सुनें। समूह बनाएं और उनके मानों को "नहीं" से "Nginx" में बदलें। ":

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

अंत में, उन पंक्तियों को खोजें जो उपयोगकर्ता और समूह को सेट करती हैं और उनके मानों को "अपाचे" से "नग्नेक्स" में बदल देती हैं:

user = nginx
group = nginx

पुनरारंभ php-fpm (sudo service php-fpm पुनरारंभ)


2
666 के बजाय 660 का उपयोग करें। 666 असुरक्षित है और इस पैच से तय किया गया था bugs.php.net/…
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
आपको कभी भी कुछ काम करने के लिए सिस्टम की सुरक्षा को कम करने का विकल्प नहीं चुनना चाहिए, बल्कि अपनी समस्या को हल करने के लिए अन्य उत्तरों में कई विकल्पों में से एक का उपयोग करना चाहिए। ऐसा करने के लिए बहुत अच्छे कारण के बिना सेलेनक्स को अक्षम न करें!
स्लीवडे

2

मेरे मामले में php-fpm बिल्कुल नहीं चल रहा था, इसलिए मुझे बस सेवा शुरू करनी थी ph

service php7.3-fpm start
#on ubuntu 18.04

2

बस /etc/php5/php-fpm.conf pid = /var/run/php5-fpm.pidIS PID फ़ाइल देखें

फाइल में /etc/php5/fpm/pool.d/www.conf

listen = /var/run/php5-fpm.sock SOCKET फ़ाइल है

अगर आप बराबर सुनते हैं ( 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

मेरी भी ऐसी ही त्रुटि थी।

सभी सिफारिशों से मदद नहीं मिली।

Nginx के साथ केवल प्रतिस्थापन www-डेटा ने मदद की है:

$ 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

हे @ एलेक्ज़ेंडर, आपको मालिकों को नगीने में बदलने के लिए चाउन कमांड का उपयोग करने की आवश्यकता है। इससे मुझे बहुत मदद मिली।
प्रतीक घीला


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 भी गैर-मौजूद थी, मैं आखिरकार सही रास्ते पर था।

इस समस्या को हल करने के लिए मैंने संस्करण 5.5 से 7.0 तक php को अपग्रेड किया। apt-get install php-fpmसाइड इफेक्ट के रूप में चाल चली। उसके बाद और अन्य आवश्यक पैकेजों को स्थापित करने से सब कुछ सामान्य हो गया।


इस अपग्रेड समाधान में स्वयं की समस्याएं हो सकती हैं , हालाँकि। चूंकि php काफी विकसित हो चुका है, इसलिए संभव है कि सॉफ्टवेयर अकल्पनीय तरीकों से टूट जाएगा। इसलिए, भले ही मैं उस रास्ते से नीचे चला गया था, आप उस संस्करण को रखना चाह सकते हैं जो आप अभी कुछ समय के लिए शौकीन हैं।

सौभाग्य से, वहाँ के लिए एक साफ तरीका प्रतीत होता है , जैसा कि अनुकूलित विंडोज साइट पर वर्णित है:

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

यह हो सकता है के रूप में हीटर समाधान, मैंने कोशिश नहीं की। मुझे उम्मीद है कि अगले कुछ दिन मुझे बताएंगे कि क्या मेरे पास होना चाहिए।


0

मैंने अपने सर्वर पर ओएस को सबसे अधिक आरामदायक प्रणाली प्राप्त करने की कोशिश में काफी बार बदला।

यह ज्यादातर समय बहुत अच्छा काम करता था लेकिन अंत में मुझे यह 502 गेटवे त्रुटि मिली।

मैं सभी के लिए एक ही रखने के बजाय प्रत्येक खाते के लिए एक php fpm सॉकेट का उपयोग करता हूं। इसलिए यदि कोई दुर्घटनाग्रस्त हो जाता है, तो कम से कम अन्य अनुप्रयोग चलते रहते हैं।

मेरे पास उपयोगकर्ता और समूह www-data हुआ करता था। लेकिन यह मेरे डेबियन 8 पर नवीनतम नगनेक्स 1.8 और php5-fpm के साथ बदल गया।

डिफ़ॉल्ट उपयोगकर्ता nginx है और इसलिए समूह है। यह सुनिश्चित करने के लिए, सबसे अच्छा तरीका / etc / group और / etc / passwd फ़ाइलों की जाँच करना है। ये झूठ नहीं बोल सकते।

वहां मैंने पाया कि अब मेरे पास दोनों में nginx है और अब www-data नहीं है।

शायद यह कुछ लोगों को अभी भी यह पता लगाने में मदद कर सकता है कि त्रुटि संदेश क्यों आ रहा है।

इसने मेरे लिए काम किया।


0

उन लोगों के लिए जिन्होंने इस धागे में सब कुछ करने की कोशिश की और अभी भी अटके हुए हैं: इससे मेरी समस्या हल हो गई। मैंने /usr/local/nginx/conf/nginx.conf अपडेट किया

  1. रेखा का कहना है कि उतारें user

  2. इसे बनाओ www-dataतो यह बन जाता है:user www-data;

  3. इसे सहेजें (रूट एक्सेस आवश्यक)

  4. नग्नेक्स को फिर से शुरू करें


0

यदि आपके पास घोषणाएं हैं

pid = /run/php-fpm.pid

तथा

सुनो = /run/php-fpm.pid

विभिन्न कॉन्फ़िगरेशन फ़ाइलों में, तब रूट इस फ़ाइल के स्वामी होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.