এনজিএনএক্স ত্রুটি পিএইচপি 5-এফপিএম-এ সংযোগ স্থাপন করে s ব্যর্থ (13: অনুমতি অস্বীকার)


290

আমি এনগিনেক্সকে 1.4.7 এবং পিএইচপি 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
কারসেল

উত্তর:


626

পিএইচপি আপডেটের পরে আমার একইরকম ত্রুটি হয়েছিল। পিএইচপি একটি সুরক্ষা বাগ ঠিক করেছে যেখানে সকেট ফাইলে অনুমতি oছিল rw

  1. আপনার সংস্করণ অনুসারে খুলুন /etc/php5/fpm/pool.d/www.confবা /etc/php/7.0/fpm/pool.d/www.conf
  2. সমস্ত অনুমতি লাইন Uncomment, যেমন:

    listen.owner = www-data
    listen.group = www-data
    listen.mode = 0660
  3. এফপিএম পুনরায় চালু করুন - sudo service php5-fpm restartবাsudo service php7.0-fpm restart

দ্রষ্টব্য : যদি আপনার ওয়েবসার্ভার www-ডেটা ব্যতীত অন্য ব্যবহারকারী হিসাবে চালায় তবে আপনাকে www.confসেই অনুযায়ী ফাইল আপডেট করতে হবে


11
প্রদত্ত যে এটি সকেটকে একেবারে প্রত্যেকের কাছে লেখার যোগ্য করে তোলে, আমি সাহায্য করতে পারি না তবে ভাবতে পারি যে এটি একটি ভয়াবহ সমাধান।
শাদুর

11
এই পদ্ধতিটি bugs.php.net/bug.php?id=67060 এ সমাধান হওয়া অনিরাপদ ডিফল্ট কনফিগারেশনটিকে পুনরুদ্ধার করে - এর পরিবর্তে আর্টোরোর দ্বারা প্রস্তাবিত শ্রুত.মালিকের ফিক্সটি বিবেচনা করুন।
ক্রিস বার্গেস

2
খুবই বিভ্রান্তিকর. আপনার উত্তরটি সঠিক হওয়ার জন্য কেন সম্পাদনা করবেন না, (যান / ইত্যাদি ...) এবং তারপরে কীভাবে কোনও কম সুরক্ষিত উপায় রয়েছে যা কেবল পুনরায় বুট করা পর্যন্ত কার্যকর হবে সে সম্পর্কে মন্তব্য করুন (/ var / .. এ যান)।
সামগুডি

1
@ টেকনোক্যাট কেন এটি কম সুরক্ষিত? আমি মনে করি তারা একই রকম are www-ডেটা এবং 660. সুতরাং, আমি বুঝতে পারি না ভুল কি?
এক্সানডার

13
sudo usermod -aG www-data nginx
এনজিঙ্কস

107

এখানে উল্লিখিত সমস্ত ফিক্সগুলি মূলত আবারও সুরক্ষা গর্তটিকে সক্ষম করে।

আমি যা করতে পেরেছি তা হ'ল আমার পিএইচপি-এফপিএম কনফিগারেশন ফাইলটিতে নিম্নলিখিত লাইনগুলি যুক্ত করা।

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

নিশ্চিত করুন যে ডাব্লু-ডেটা প্রকৃত অর্থে এনজিঙ্ক্স কর্মী হিসাবে চলছে। ডিবিয়ানদের জন্য এটি ডিফল্টভাবে www-ডেটা।

এটি এইভাবে করা সুরক্ষা সমস্যাটিকে সক্ষম করে না যে এই পরিবর্তনটি ঠিক করার কথা ছিল


16
Nginx ব্যবহারকারীর নাম চেক করতেps aux|grep nginx
স্যামগুডি

2
উবুন্টুতে /etc/php5/fpm/php.ini
রিয়েলিটি এক্সট্রাক্টর

1
পুনঃটুইট করুন এই ফাইলটিতে কেবল সাধারণ পিএইচপি সেটিংস থাকে, এফপিএম প্রক্রিয়া পরিচালকের সাথে সম্পর্কিত কোনও কিছুই।
মার্টিজন হিমেলস

4
আমার জন্য, আমি নিজে মুছে দেওয়ার ছিল /var/run/php5-fpm.sock, যেহেতু এটি ইতিমধ্যে দ্বারা তৈরি করা হয়েছে www-data
সবেমাত্র

1
এটি যথাযথ সমাধান, সুরক্ষার ভিত্তিতে-
jschorr

45

@ জান্ডারের সমাধান কাজ করে তবে পুনরায় বুট করার পরেও তা স্থির থাকে না।

আমি দেখতে পেলাম যে আমাকে বদলে 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.owner = www-data
listen.group = www-data
listen.mode = 0660

/ var / run কেবল গত বুট থেকে চলমান সিস্টেম সম্পর্কিত তথ্য রাখে, যেমন, বর্তমানে লগ-ইন করা ব্যবহারকারী এবং চলমান ডিমনগুলি। ( http://en.wikedia.org/wiki/Files systemm হায়ারারচি_ স্ট্যান্ডার্ড# ডিরেক্টরী_ স্ট্রাস্ট্রাকচার )।

সাইড নোট:

আমার php5-fpm -vরিপোর্ট: PHP 5.4.28-1+deb.sury.org~precise+1। সাম্প্রতিক আপডেটের পরেও বিষয়টিটি ঘটেছিল।


5
এই পদ্ধতিটি bugs.php.net/bug.php?id=67060 এ সমাধান হওয়া অনিরাপদ ডিফল্ট কনফিগারেশনটিকে পুনরুদ্ধার করে - এর পরিবর্তে আর্টোরোর দ্বারা প্রস্তাবিত শ্রুত.মালিকের ফিক্সটি বিবেচনা করুন।
ক্রিস বার্গেস

যদি 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
14:52 এ প্রতিমূর্তি

37

আপনি যদি এই পোস্টে সমস্ত কিছু চেষ্টা করে দেখে থাকেন তবে পিএইচপি কাজ করতে সফল না হন তবে এটিই আমার ক্ষেত্রে স্থির করে:

আপনার এই লাইনগুলি /etc/php5/fpm/pool.d/www.conf- তে নিরবিচ্ছিন্ন রয়েছে তা নিশ্চিত করুন:

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

নিশ্চিত করুন / ইত্যাদি / এনগিনেক্স / ফাস্টসিগি_প্রেমগুলি দেখতে দেখতে:

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;

এই দুটি লাইন আমার / ইত্যাদি / এনজিনেক্স / ফাস্টসিজি_প্যারামগুলি থেকে অনুপস্থিত ছিল, নিশ্চিত হয়ে নিন যে তারা সেখানে আছে!

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

তারপরে, php5-fpm এবং nginx পুনরায় চালু করুন। কৌতুক করা উচিত।


2
তোমাকে অনেক ধন্যবাদ! আমি আমার সমস্ত আশা হারাচ্ছিলাম, এটি আমার গাধাটিকে বাঁচিয়েছিল।
দিয়েগো কাস্ত্রো

1
আপনি আমার নায়ক, আপনি দিন বাঁচিয়েছেন!
jeppeb

1
আমি কৃতজ্ঞ বলে বর্ণনা করতে পারে এমন কোনও শব্দ নেই! প্যাকেজ আপডেট করার পরে সবকিছু কাপ্তুতে চলে যায় এবং এটি দিনটি বাঁচায়।
নিকোলা প্রকোপিও

আমি আপনি একাধিক + + দিতে চান
g9m29

28

প্রকৃতপক্ষে, "শ্রবণ.মোড" হওয়া উচিত: "0660" এবং অন্যান্য "লিখিত বা অন্যান্য পঠনযোগ্য হিসাবে" 0666 "এখানে কখনও পছন্দ নয়।

সুতরাং আপনার ওয়েবসারভারটি কোন ব্যবহারকারী / গ্রুপ হিসাবে চলছে তা অনুসন্ধান করার চেষ্টা করুন। আমি CentOs ব্যবহার করি এবং এটি ব্যবহারকারীর "nginx" হিসাবে চালিত হয় তাই আপনার পিএইচপি-এফপিএম.কম এ যুক্ত করুন:

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

অবশেষে পিএইচপি-এফপিএম পুনরায় চালু করুন


আমার উবুন্টু 12.04 সিস্টেমে এটির মূল্য কী, তার জন্য ব্যবহারকারী এবং গোষ্ঠীটি www-data
ব্র্যাড

1
সেন্টোসে আমার জন্য, এটি ব্যবহারকারীকে "কেউ নয়" এবং গোষ্ঠীটিকে "এনজিনেক্স" হিসাবে সেট করতে কাজ করেছে। সম্ভবত কোনও বড় উন্নতি নয়, তবে আমি যতটা সম্ভব সীমাবদ্ধ অনুমতি দিতে পছন্দ করব।
Kzqai

23

কোন ব্যবহারকারী nginx চালায় তা পরীক্ষা করুন। উবুন্টু হিসাবে 12.04 এনগিনেক্স এনজিএনএক্স ব্যবহারকারী দ্বারা চালিত হয় যা www-ডেটা গ্রুপের সদস্য নয়।

ইউজারমড -a -G www-ডেটা এনজিনেক্স

এবং এনগিনেক্স এবং পিএইচপি 5-এফপিএম ডেমন পুনরায় চালু করা সমস্যার সমাধান করে।


এই ফিক্সটি সবচেয়ে পরিষ্কার, সুরক্ষার দিক থেকে মনে হচ্ছে। উবুন্টু 14.04, এনগিনেক্স 1.7.10, পিএইচপি 5.5.9-1ubuntu4.6 (এফপিএম-এফসিজি)
এন্থমচ্রিস

12

আপনার পিএইচপি কনফিগারেশনে অনুমতি সম্প্রসারণের বিকল্পের পরিবর্তে, আপনি আপনার এনজিএনএক্স কনফিগারেশনে উল্লিখিত ব্যবহারকারীর পরিবর্তন করতে পারবেন।

উপরে আপনার nginx.conf সংবাদের প্রথম লাইনে ব্যবহারকারী এবং গোষ্ঠী যথাক্রমে www এবং www হিসাবে নির্দিষ্ট করা হয়েছে।

user  www www;

এদিকে, আপনার পিএইচপি কনফিগারেশন সম্ভবত কোনও ব্যবহারকারী এবং www-ডেটার গ্রুপকে নির্দিষ্ট করে:

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 পরিবর্তন করা আবশ্যক।
LCB

7

আপনার পৃথক এফপিএম পুলগুলিতেও বিবেচনা করা উচিত।

আমি বুঝতে পারি না কেন আজ এই উত্তরগুলির কোনওটিই আমার পক্ষে কাজ করছে না। এটি আমার জন্য একটি সেট-অ্যান্ড-ভুলে যাওয়া দৃশ্যে পরিণত হয়েছিল, যেখানে আমি ভুলে গিয়েছিলাম যে শ্রুত.উসার এবং শ্রুত.আরগ্রুপকে প্রতি পুলের ভিত্তিতে নকল করা হয়েছিল।

যদি আপনি বিভিন্ন ব্যবহারকারী অ্যাকাউন্টগুলির জন্য পুল ব্যবহার করি যেমন আমি করেছি, যেখানে প্রতিটি ব্যবহারকারীর অ্যাকাউন্টে তাদের এফপিএম প্রক্রিয়া এবং সকেটগুলির মালিকানা রয়েছে, কেবলমাত্র ডিফল্ট শ্রুত.আলোনার এবং লিংক.গ্রুপ কনফিগারেশন বিকল্পগুলি 'এনজিনেক্স' এ কার্যকর হবে না। এবং স্পষ্টতই, 'এনজিনেক্স' এগুলির সমস্ত মালিকানা দেওয়া কোনওভাবেই গ্রহণযোগ্য নয়।

জন্য প্রতিটি পুকুর , নিশ্চিত করুন যে

listen.group = nginx

অন্যথায়, আপনি পুলের মালিকানা এবং এই জাতীয় একা ছেড়ে যেতে পারেন।


ধন্যবাদ. যদি এনগনিক্স বিভিন্ন ব্যবহারকারীর অ্যাকাউন্টের জন্য কাজ করে, তবে এই "শ্রবণ.group = nginx"
মুরাতস্প্ল্যাট

6

উবুন্টু ১৪.০৪ চলমান আমার মেশিনটি (পিএইচপি-র আপডেট সহ) আপডেট করার সাথে সাথে আমি আজই এই ত্রুটিটি পেয়েছি । বিতরণ কনফিগারেশন ফাইল/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 টি সাইট চলছে যা এই মেশিনে পিএইচপি-এফপিএম ব্যবহার করে একটি ভাল কাজ করছিল এবং অন্যটি (একটি ক্ষুদ্র ক্ষুদ্র আরএসএস ইনস্টলেশন) আমাকে একটি 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;
}

হালনাগাদ

এটি লক্ষ করা উচিত যে উবুন্টু দুটি ফাস্টসিগি সম্পর্কিত প্যারামিটার ফাইল এবং একটি কনফিগারেশন স্নিপেট পাঠায় যা বিবিডের পরে এবং পিপিএ-তে উপলব্ধ সংস্করণেসমাধানটি সেই অনুযায়ী আপডেট করা হয়েছিল।

ফাস্টসিগি প্যারামিটার ফাইলগুলির ভিন্নতা:

$ 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
অনেক ধন্যবাদ. আমি একই সমস্যা আছে। এটি অদ্ভুত যে প্যাকেজে এই লাইনটি অন্তর্ভুক্ত নেই। আমি এটিকে কেবল / ইত্যাদি / এনজিনেক্স / ফাস্টসিজি_প্যারামগুলিতে যুক্ত করেছি এবং এখনই আবার সমস্ত কাজ করে।
বুকশ্ক0জেজ

5

সকেটের সাথে সম্ভাব্য অনুমতি সংক্রান্ত সমস্যাগুলি বাইপাস করে নিম্নলিখিত সাধারণ ফিক্সটি আমার পক্ষে কাজ করেছিল।

আপনার এনগিনেক্স কনফিগারেশনে, ফাস্টসিগি_পাস সেট করুন:

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


যদিও এটি একত্রে উঠে যেতে পারে, তবে এটি কোনও মোড়ের সমস্যা সমাধানের সমাধান নয় not
ক্রিস

5

আমার ক্ষেত্রে সমস্যাটি হ'ল এনগিনেক্স ওয়েব সার্ভারটি ব্যবহারকারী এনগিনেক্স হিসাবে চলছিল এবং পুলটি ব্যবহারকারী www-ডেটা হিসাবে চলছিল।

ব্যবহারকারী এনগিনেক্স চালু হয়ে সমস্যাটি সমাধান করেছি in /etc/nginx/nginx.conf ফাইলটিতে (আপনার সিস্টেমে অন্যরকম হতে পারে, আমার উবুন্টু 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

আমি নিম্নলিখিত পদক্ষেপ গ্রহণ করে অ্যামাজন লিনাক্স এএমআই 2016.09 (সেন্টোস 7) এ একই সমস্যাটি স্থির করেছি।

আপনার www.conf ফাইলগুলি খুলুন (উদাহরণ: sudo Nano /etc/php-fpm.d/www.conf ) সর্বশেষে, সেই লাইনগুলি সন্ধান করুন যা শ্রবণ.আলনার এবং শ্রুত.আরগ্রুপকে সেট করে এবং তাদের মানগুলি "কেউ না" থেকে "এনজিনেক্সে" পরিবর্তন করে ":

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

শেষ অবধি, ব্যবহারকারী এবং গোষ্ঠী সেট করে এমন লাইনগুলি সন্ধান করুন এবং "অ্যাপাচি" থেকে "এনজিনেক্স" এ তাদের মান পরিবর্তন করুন:

user = nginx
group = nginx

পিএইচপি-এফপিএম পুনরায় চালু করুন (সুডো পরিষেবা পিএইচপি-এফপিএম পুনঃসূচনা)



3

এখানে সর্বাধিক গুরুত্বপূর্ণ বিষয়টি হ'ল ব্যবহারকারী যাঁরা এনজিনেক্স ব্যবহার করছেন তখন আপনারও এটি নির্দিষ্ট করতে হবে

আপনার 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" তাই কেবল এটি প্রতিস্থাপন করুন।

  • এনগিনেক্স এবং পিএইচপি এফএমপি পুনরায় চালু করুন

2

আপনার যদি ব্যবহারকারী প্রতি পৃথক পুল থাকে তা নিশ্চিত করুন কনফিগারেশন ফাইলে ব্যবহারকারী এবং গোষ্ঠী সঠিকভাবে সেট করা আছে। আপনি /etc/nginx/nginx.conf ফাইলটিতে nginx ব্যবহারকারী খুঁজে পেতে পারেন। nginx গ্রুপ nginx ব্যবহারকারী হিসাবে একই।

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

2

এছাড়াও সেলিনাক্স (/ ইত্যাদি / সেলিনাক্স) চেক করুন:

# getenforce

বন্ধ কর:

# setenforce 0

1
আপনার কোনও কাজ করার জন্য কোনও সিস্টেমের সুরক্ষা হ্রাস করার উপায় কখনই বেছে নেওয়া উচিত নয়, বরং আপনার সমস্যা সমাধানের জন্য অন্যান্য উত্তরের অনেকগুলি বিকল্পের একটি ব্যবহার করুন। এটি করার জন্য অত্যন্ত ভাল কারণ ব্যতীত সেলিনাক্সকে অক্ষম করবেন না!
স্লিডেভ

2

শুধু /etc/php5/php-fpm.conf pid = /var/run/php5-fpm.pidআইএস পিআইডি ফাইল দেখুন

ফাইলের মধ্যে /etc/php5/fpm/pool.d/www.conf

listen = /var/run/php5-fpm.sock সকেট ফাইল

যদি আপনি সমান শুনান ( 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

1

উবুন্টু 14.04 lts থেকে উবুন্টু 16.04 lts এ আপগ্রেড করার পরে আমি এই ত্রুটির আরও একটি কারণ খুঁজে পেয়েছি যা আমি আগে দেখিনি।

আপগ্রেড করার প্রক্রিয়া চলাকালীন আমি কোনওভাবে আমার পিএইচপি 5-এফপিএম এক্সিকিউটেবল পুরোপুরি হারিয়েছি। সমস্ত কনফিগার ফাইলগুলি অক্ষত ছিল এবং এটি বুঝতে আমার কিছুটা সময় লেগেছিলservice php5-fpm start সত্যই কোনও প্রক্রিয়া শুরু হয়নি, কারণ এতে কোনও ত্রুটি দেখা যায় নি।

আমার জাগরণের মুহূর্তটি যখন আমি লক্ষ্য করেছি যে সেখানে থাকা উচিত ছিল এমন কোনও সকেট ফাইল নেই /var/run/php5-fpm.sock, বা netstat -anবন্দরটিতে এই প্রক্রিয়াটি সমাধান করার চেষ্টা করার সময় বিকল্প হিসাবে আমি চেষ্টা করেছি এমন কোনও প্রক্রিয়া দেখেনি। ফাইল / usr / sbin / php5-fpm যেহেতু অস্তিত্বহীন ছিল, তাই আমি অবশেষে সঠিক পথে ছিলাম finally

এই সমস্যা সমাধানের জন্য আমি পিএইচপি সংস্করণ 5.5 থেকে 7.0 সংস্করণে আপগ্রেড করেছি। apt-get install php-fpmপার্শ্ব প্রতিক্রিয়া হিসাবে কৌশলটি করেছেন। এর পরে এবং অন্যান্য প্রয়োজনীয় প্যাকেজগুলি ইনস্টল করার পরে সবকিছু স্বাভাবিক অবস্থায় ফিরে আসছিল।


এই আপগ্রেডিং সমাধানটির নিজস্ব সমস্যা থাকতে পারে । যেহেতু পিএইচপি বেশ খানিকটা বিকশিত হয়েছে, সম্ভবত সফ্টওয়্যারটি অভাবনীয় উপায়ে ভেঙে যায়। সুতরাং, যদিও আমি সেই পথে নামলাম না, আপনি চাইছেন যে সংস্করণটি আপনি খুব পছন্দ করেন তা কেবল আরও কিছু সময়ের জন্য রাখতে পারেন।

ভাগ্যক্রমে, কাস্টমাইজ উইন্ডোজ সাইটে বর্ণিত হিসাবে এটির জন্য একটি ঝরঝরে উপায় বলে মনে হচ্ছে :

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

ন্যাটারের সমাধান যেমনটি হতে পারে, আমি চেষ্টা করে দেখিনি। আমি আশা করি পরের দু'দিন আমাকে বলবে যে আমার উচিত কিনা।


1

আমার ক্ষেত্রে পিএইচপি-এফপিএম মোটেও চলছিল না, তাই আমাকে কেবল পরিষেবাটি শুরু করতে হয়েছিল 😂

service php7.3-fpm start
#on ubuntu 18.04

1

আমি একই ত্রুটি ছিল।

সমস্ত প্রস্তাবনা সাহায্য করেনি।

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

আরে @ আলেকজান্ডার, মালিকদের এনজিএনএক্সে পরিবর্তন করার জন্য আপনাকে ক্লাউন কমান্ডটি ব্যবহার করতে হবে। এটি সত্যই আমাকে অনেক সাহায্য করেছিল।
প্রতীক ঘেলা


0

বেশ কয়েকবার সর্বাধিক আরামদায়ক সিস্টেম পাওয়ার চেষ্টা করে আমি আমার সার্ভারে ওএস পরিবর্তন করেছি।

এটি বেশিরভাগ সময় খুব ভালভাবে কাজ করত তবে শেষ পর্যন্ত আমি এই 502 গেটওয়ে ত্রুটি পেয়েছিলাম।

আমি সবার জন্য একই অ্যাকাউন্ট না রেখে প্রতিটি অ্যাকাউন্টের জন্য পিএইচপি এফএমপি সকেট ব্যবহার করি। সুতরাং যদি কোনও ক্র্যাশ হয় তবে কমপক্ষে অন্যান্য অ্যাপ্লিকেশনগুলি চলতে থাকবে।

আমি ব্যবহারকারী এবং গ্রুপ www- ডেটা ব্যবহার করতাম। তবে এটি আমার ডেবিয়ান 8 এ সর্বশেষতম এনগিনেক্স 1.8 এবং পিএইচপি 5-এপিএম-এর সাথে পরিবর্তিত হয়েছে।

ডিফল্ট ব্যবহারকারী হ'ল এনগিনেক্স এবং তেমন গ্রুপ। এটির বিষয়ে নিশ্চিত হতে, সর্বোত্তম উপায় হ'ল / ইত্যাদি / গ্রুপ এবং / ইত্যাদি / পাসডব্লু ফাইল পরীক্ষা করা। এরা মিথ্যা বলতে পারে না।

এটি সেখানে আমি দেখতে পেয়েছি যে এখন আমার উভয়ের মধ্যে এনগিনেক্স রয়েছে এবং আর www-ডেটা নেই।

সম্ভবত এটি ত্রুটি বার্তা কেন আগমন করে তা এখনও অনুসন্ধান করার চেষ্টা করা কিছু লোককে সহায়তা করতে পারে।

এটা আমার জন্য কাজ করেছে।


0

যারা এই থ্রেডে সবকিছু চেষ্টা করেছেন এবং এখনও আটকে আছেন তাদের কাছে: এটি আমার সমস্যার সমাধান করেছে। আমি আপডেট করেছি /usr/local/nginx/conf/nginx.conf

  1. লাইনটি মন্তব্য করে user

  2. এটি তৈরি করুন www-dataযাতে এটি হয়ে যায়:user www-data;

  3. এটি সংরক্ষণ করুন (রুট অ্যাক্সেস প্রয়োজনীয়)

  4. Nginx পুনরায় চালু করুন


0

আপনার যদি ঘোষণা থাকে

pid = /run/php-fpm.pid

এবং

শুনুন = /run/php-fpm.pid

বিভিন্ন কনফিগারেশন ফাইলগুলিতে, তারপরে রুট এই ফাইলটির মালিক হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.