ফাস্টসিজিআই / পিএইচপি-এফপিএম (ব্যবহারকারী "কেউ নেই") চলাকালীন পিএইচপি সেশনস ফোল্ডারে কী অনুমতি / মালিকানা সেট করবেন?


17

বেশ কয়েকটি স্ক্রিপ্ট চালাতে আমার সমস্যা হচ্ছে কারণ পিএইচপি-এফপিএম আমার সেশন ফোল্ডারে লিখতে পারে না:

"2009/10/01 23:54:07 [ত্রুটি] 17830 # 0: * 24 ফাস্টসিজিআই স্টাডারে প্রেরণ:" পিএইচপি সতর্কতা:
    অজানা: খোলা (/ var / lib / php / সেশন / sess_cskfq4godj4ka2a637i5lq41o5, O_RDWR)
    ব্যর্থ: 0 লাইনে অজানাতে অনুমতি অস্বীকার (13)
পিএইচপি সতর্কতা: অজানা: সেশন ডেটা (ফাইল) লিখতে ব্যর্থ। যাচাই করুন
    যে সেশন.সভে_পাথের বর্তমান সেটিংসটি সঠিক
    (/ var / lib / পিএইচপি / সেশন) 0 লাইনটিতে অজানাতে "উজান পড়া পড়ার সময়"

স্পষ্টতই এটি একটি অনুমতির সমস্যা; আমার সেশন ফোল্ডারের মালিক / গোষ্ঠী হ'ল ওয়েবসার্ভার ব্যবহারকারী, এনজিআইএনএক্স। পিএইচপি-এফপিএম হিসাবে চলমান nobody, এবং তাই এটি এনজিঙ্ক্স গ্রুপে যুক্ত করা তুচ্ছ নয়।

এর অস্থায়ী সমাধান হ'ল এর অনুমতিগুলি সেট /var/lib/php/sessionকরা 777- আমার একটি অনুভূতি আছে যা "সেরা অনুশীলন" না হলেও।

যখন আপনাকে কোনও ফোল্ডারে ডেমোন রাইটিং অ্যাক্সেস দেওয়ার দরকার হয় তবে এটি অনুশীলন করার মতো সেরা অনুশীলনটি কী nobody?

উত্তর:


24

আমাদের যেখানে সঠিক অনুমতি

chown -R nobody:nogroup /var/lib/php/session

যেমন php-cgiরান যেমন nobody, যদিও nginx ব্যবহারকারী হিসাবে সঞ্চালিত হয়nginx


আমার ক্ষেত্রে এটি মালিকানা / অনুমতিগুলির প্রশ্ন ছিল না। "3;" সরান সেশন থেকে। সেভ_পাথ = "3; / ভেরি / লিবিব / পিএইচপি / সেশনস"
জন দো

1
আমি নিম্নলিখিত ত্রুটিটি পেয়েছি: অবৈধ গোষ্ঠী << কেউ নেই: নগর গোষ্ঠী >> :(
প্যাথ্রোস

আমি দেখতে পেলাম nobodyযে আমার ব্যবহারকারীর মধ্যে এই কোডের এই লাইনটি পিএইচপি চালায়: <?php echo exec('whoami'); ?>(আমার ক্ষেত্রে www-ডেটা) এবং তারপরে এটি সরল ছিল ঠিক যেমন এটি লিখেছিল chown -R www-data:www-data /var/lib/php/sessionsএটি একটি আন্ডাররেটেড গুগল ফলাফল কারণ এটি কেবলমাত্র উত্তরই এটি সহায়তা করেছিল আমাকে কয়েক ঘন্টা অনুসন্ধানের পরে! ধন্যবাদ!
দিমিতর

9

আপনি যদি এনজিনেক্স ব্যবহার করেন তবে কোনও সিস্টেম আপডেট চালানোর সময় আপনি এটির মধ্যে চলে যেতে পারেন ।

কখনও কখনও আপনি সিস্টেম আপডেট করার সময়, গ্রুপটি /var/lib/php/sessionঅ্যাপাচে পরিবর্তন করা হয়।

sudo chgrp nginx /var/lib/php/*777 এ অনুমতি নির্ধারণের পরিবর্তে কার্যকর করার চেষ্টা করুন যা একটি খারাপ অভ্যাস।

এটি আমার পক্ষে অন্তত কাজ করেছে।


1
এটি গ্রহণযোগ্য উত্তর হিসাবে চিহ্নিত করা উচিত।
যুদা প্রবীরা

3

/etc/php.ini সেশন.সেভ_পথ নির্দেশিকা ব্যবহার করুন ।

একটি অস্থায়ী সমাধান হ'ল / var / lib / পিএইচপি / সেশনের অনুমতিগুলি 7 to7 তে সেট করা - আমার একটি অনুভূতি আছে যা "সেরা অনুশীলন" না হলেও।

"আপনি যদি এই সেটটি একটি বিশ্ব-পঠনযোগ্য ডিরেক্টরিতে রেখে দেন তবে সার্ভারের অন্যান্য ব্যবহারকারীরা সেই ডিরেক্টরিতে ফাইলগুলির তালিকা পেয়ে সেশনগুলি হাইজ্যাক করতে সক্ষম হতে পারেন।"


দুঃখিত আমি মনে করি আমি পরিষ্কার ছিলাম না: সেশন.সেস_প্যাথটি ইতিমধ্যে / var / lib / php / সেশনে সেট করা আছে। সমস্যাটি হ'ল পিএইচপি-এফপিএম উভয়কে এটি লিখতে সক্ষম করার পাশাপাশি এটি সুরক্ষিত রাখার জন্য সেশন পাথ ডিরেক্টরিতে কী অনুমতি এবং মালিকানা অর্পণ করার তা আমি বুঝতে পারি না। ডিরেক্টরিটি মালিক / গোষ্ঠী "এনজিনেক্স" হিসাবে সেট করা (ওয়েব সার্ভার যেটি আমি চালাচ্ছি) এবং অনুমতি 755 এর কৌশলটি মনে হচ্ছে না
প্রফেসর ফ্রিঙ্ক

4
১. একই ব্যবহারকারী ব্যবহার করুন: এনগিনেক্স এবং পিএইচপি-এফপিএমের জন্য গ্রুপ (উভয় nginx.confবা এর মাধ্যমে php-fpm.conf), যাতে আপনি এই ডিরেক্টরিটি 700 রাখতে chown -R nginx:nobody /var/lib/php/session && chmod -R 770 /var/lib/php/sessionপারেন
2..আপনি মনে করেন এনগিনেক্স

2
আমি নিশ্চিত করতে পারি যে এনজিনেক্স ব্যবহার করে: কেউ (বা কোনও পরিস্থিতিতে এনগিনেক্স: নোগ্রুপ) কাজ করে না। যদি এটি সম্ভব হয় তবে আমি SaveTheRbtz বিকল্পটি 1 এর দিকে ঝুঁকতে চাই।
মাইকেল জনসন

3

আমাকে প্রতিটি পিএইচপি-এফএমপি পুলের জন্য / var / lib / পিএইচপি / সেশনে 0700 অধিকার সহ ফোল্ডার তৈরি করতে হয়েছিল।

এই ফোল্ডারটির মালিক হলেন পিএইচপি-এফপিএম পুলের ব্যবহারকারী এবং গোষ্ঠী।

এবং / var / lib / পিএইচপি / সেশন এখন 0777।

আমি মনে করি এই পদ্ধতিটি সবচেয়ে সুরক্ষিত। কেবল পিএইচপি-এফপিএম পুল ব্যবহারকারীরা এই সেশনগুলি দেখতে পাবেন।


1

আমার একই সমস্যা ছিল এবং আমি এটি সমাধান করেছি। আমি সেখানে গিয়েছিলাম /tmp(সেখানে আমার সেস_ * ফাইলগুলি রয়েছে) এবং সেগুলি সমস্ত মুছে ফেলেছি। তারপরে সবকিছু ঠিকঠাক ছিল।

আমি যতটুকু কাছে বলতে পারি সিস্টেমটি পুরানো লক করা ফাইলগুলিতে লেখার চেষ্টা করছে।

আমি খেলছিলাম পরে সমস্যা দেখা দিয়েছে php.ini। আমি আমার জীবন থেকে কয়েক বছর হারিয়েছি কিন্তু শেষ পর্যন্ত আমি সমাধানটি খুঁজে পেয়েছি।


1

সঠিক উপায়টি সেশন ফোল্ডারের মালিকানা nginx এ পরিবর্তন করা উচিত। তবে পিএইচপি-এফপিএম ডিফল্টভাবে এনজিনেক্স ব্যবহারকারী ব্যবহার করে চলবে না। এটি ডিফল্টভাবে অ্যাপাচি ব্যবহার করে।

এই বলে যে, আপনাকে পিএইচপি-এফপিএম ব্যবহার করে ব্যবহারকারীর সম্পাদনা করে পরিবর্তন করতে হবে /etc/php-fpm.d/www.conf

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

পিএইচপি-এফপিএম পুনরায় চালু করুন এবং আপনার যাওয়া উচিত।

service php-fpm restart


পিএইচপি সেশন পথের অবস্থানটি এর /etc/php.iniনীচে পাওয়া যাবে session.save_path/var/lib/php/sessionডিফল্ট হয়।

মালিকানা এবং পিএইচপি সেশন ফোল্ডারের গ্রুপ আপডেট করার আদেশ Command

chown -R nginx:nginx /var/lib/php/session

এবং আপনি এমনকি chmod সঙ্গে যেতে ভাল হওয়া উচিত 700


1

ডিরেক্টরি / var / lib / php / সেশনের স্টিকি বিট অনুমতি থাকা উচিত।

sudo chmod 1773 /var/lib/php/sessions

ls -al /var/lib/php/
drwxr-xr-x  4 root root   .
drwxr-xr-x 51 root root   ..
drwxr-xr-x  3 root root   modules
drwx-wx-wt  2 root root   sessions

0

উপর ভিত্তি করে @Judder উত্তর, এটা কাজ আমি নিম্নলিখিত কমান্ড যোগ করার জন্য দিতে ছিল করতে পড়া এবং লেখার অনুমতি কেউ কিছু এবং nogroup :

chown -R nobody:nogroup /var/lib/php/session

sudo chmod -R ug+rw /var/lib/php/sessions

chmod দেওয়া অনুমতি পরিবর্তন করতে হবে ফোল্ডারের
-R ফোল্ডার ও নির্মিত ফাইলগুলিতে একই অনুমতি প্রযোজ্য হবে মধ্যে ফোল্ডারের দেওয়া
তোমার দর্শন লগ করা ব্যবহারকারীর জন্য
গ্রাম দলের জন্য
পড়া অনুমতির জন্য
W লেখার অনুমতি

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