PHP 5.3 और सत्र फ़ोल्डर के साथ समस्याएँ


81

मैंने हाल ही में PHP 5.3 में अपग्रेड किया है और तब से मुझे (छिटपुट) त्रुटि संदेश मिलते हैं जो अपाचे (या सत्र फ़ाइलों के क्लीनर हो सकते हैं) को उस फ़ोल्डर की कोई अनुमति नहीं है जहां सत्र संग्रहीत हैं।
यह बेतरतीब ढंग से होता है और सटीक चरणों के साथ पुन: उत्पन्न नहीं किया जा सकता है, जिसके कारण मुझे अनुमान लगा कि यह सत्र क्लीनर है।
किसी को भी इस तरह की त्रुटियों के साथ कोई अनुभव है?

त्रुटि संदेश (जिसे session_start()लाइन पर निकाल दिया जाता है) है:

ps_files_cleanup_dir: opendir (/ var / lib / php5) विफल: अनुमति से इनकार कर दिया।

सत्र निर्देशिका पर ls-exr देता है:

drwx-wx-wt  2 root          root          4096 2010-05-25 12:39 php5

इस निर्देशिका के अंदर मुझे www-data के स्वामित्व वाली सत्र फाइलें दिखाई देती हैं जो कि मेरी अपाचे है, और ऐप ठीक काम नहीं करती है। जो मुझे आश्चर्यचकित करता है, किस उपयोगकर्ता के तहत सत्र जीसी चलता है?


मैंने किया था, लेकिन 5.3 पर नहीं। सत्र त्रुटि पथ को फ़िल्टर करने के लिए अनुमतियाँ त्रुटि हुई। मुझे लगता है कि आपने अनुमतियाँ जाँच ली हैं?
जारोड नेटल्स

@Jarrod मैं देख रहा हूं कि www-data उस फ़ोल्डर को पढ़ और लिख सकता है (जिसमें अभी सभी के लिए w & r है, उपयोगकर्ता, समूह और दुनिया) क्या मुझे कुछ और देखना चाहिए?
इते मूव -मालिमोवका

मैं यह अनुमान लगाता हूं कि यह कारण है कि यह छिटपुट रूप से होता है कि यह त्रुटि तब होती है जब सत्र कचरा संग्राहक चलाया जाता है, जो मुझे लगता है कि डिफ़ॉल्ट रूप से प्रति सत्र आरंभीकरण चलाने का 1% मौका है। क्या आपने सत्रों से संबंधित php.ini में कोई बदलाव किया है? यहां डिफ़ॉल्ट के बाहर क्या है? सत्र फ़ोल्डर के मालिक की जाँच करें, उसके बाद मैं .ini या त्रुटियों को देखे बिना हानि पर हूं।
जारोड नेटल्स

स्वामी रूट है, सत्र www-data द्वारा बनाए गए हैं, हर किसी के पास इस फ़ोल्डर तक पहुंच है। मैं एक-एक करके इनआई सेटिंग्स पर जाऊंगा, कुछ संदिग्ध तलाशूंगा।
इत्ते मूव -मालिमोवका

ps_files_cleanup_dir: opendir (/ var / lib / php5) विफल रहा: अनुमति से इनकार किया (
Itay Moav -Malimovka

जवाबों:


121

तय: अपने php.iniसेट session.gc_probabilityमें0

कारण मुझे विश्वास है कि मुझे यहाँ जवाब मिला http://somethingemporium.com/2007/06/obscure-error-with-php5-on-debian-ubuntu-session-phpini-garbage

अनिवार्य रूप से, कचरा संग्रह कुछ प्रणालियों (यानी उबंटू / डेबियन) पर क्रोन नौकरियों द्वारा किया जाता है। कुछ php ini निष्पादक जैसे php-cli भी कचरा संग्रहण करने का प्रयास करते हैं और इसके परिणामस्वरूप आपको जो त्रुटि मिली है।


6
मैं उबंटू 10.04 पर भी इस समस्या का सामना कर रहा हूं, लेकिन php.ini की जांच करने पर मैंने पाया कि session.gc_probabilityपहले से ही सेट है 0
जोनाथन

5
@ जोनाथन - आप शायद पाएंगे कि आपका आवेदन फिर मूल्य निर्धारित कर रहा है।
सिनैकेसा

3
@SynackSA पर्याप्त रूप से, यह तब होता है जब मैं एक कस्टम, साइट विशिष्ट php.ini फ़ाइल बनाता हूं, जब session.gc_probabilityयह 1 से ट्रिगर होता है। यह तब भी हुआ जब php.ini फ़ाइल में कोई सेटिंग नहीं है ! मैं Ubuntu, Apache 2.2 पर suphp चला रहा हूं। मुझे आश्चर्य है कि अगर यह किसी प्रकार का बग है। वैसे भी, session.gc_probability = 0मेरे कस्टम, साइट विशिष्ट php.ini फ़ाइल को जोड़ने से समस्या का समाधान हो रहा है।
जोनाथन

2
@ जोनाथन यह वह तरीका है जो काम करने के लिए है, क्योंकि डिफ़ॉल्ट मान 1 है
ROunofF

2
यह सत्र कचरा संग्रह को निष्क्रिय करता है। आपको शायद यह जांचना चाहिए कि क्या वास्तव में आपके सत्रों की सफाई करने वाली क्रोन है।
hnsgoed

23

यह उबंटू सर्वर पर एक विशिष्ट त्रुटि प्रतीत होती है (मैं ल्यूसिड एलटीएस का उपयोग कर रहा हूं)। / Var / lib / php5 निर्देशिका की डिफ़ॉल्ट अनुमतियाँ हैं

drwx-wx-wt  2 root     root     4096 2011-11-04 02:09 php5

इसलिए यह लिखा जा सकता है लेकिन वेब सर्वर द्वारा नहीं पढ़ा जाता है, मुझे लगता है कि त्रुटियों की व्याख्या करता है।

जैसा कि उबंटू में क्रोन ( /etc/cron.d/php5) के माध्यम से खुद की कचरा सफाई है , यह शायद सबसे अच्छा है php के कचरा संग्रह को निष्क्रिय करने के लिए जैसा कि ऊपर दीवान वैद्य द्वारा सुझाया गया है।

session.gc_probability = 0

वास्तव में एक कारण है कि सत्र फ़ोल्डर विश्व पठनीय नहीं होना चाहिए - जैसा कि PHP मैनुअल कहता है:

यदि आप इस सेट को विश्व-पठनीय निर्देशिका, जैसे / tmp (डिफ़ॉल्ट) पर छोड़ते हैं, तो सर्वर के अन्य उपयोगकर्ता उस निर्देशिका में फ़ाइलों की सूची प्राप्त करके सत्रों को हाईजैक करने में सक्षम हो सकते हैं।


2

वर्तमान में जो समाधान मैं उपयोग करता हूं (जो मुझे यकीन नहीं है कि सही है) Apache उपयोगकर्ता (मेरे मामले में www-data) पर सत्र फ़ोल्डर पर स्वामित्व देना है।


2
जैसा कि ऊपर मैरी का उल्लेख है, कि किसी भी उत्पादन सर्वर के लिए एक सुरक्षा मुद्दा बना सकते हैं।
क्ज़कई

2
मैंने लंबे समय से सही समाधान लागू किया है :-), लेकिन, सुरक्षा का मुद्दा ज्यादातर साझा सर्वरों में है
इताय माव -मालिमोवका

1
@ पाइक सत्र की सफाई CRON
Itay Moav -Malimovka

1

यह मुद्दा मुझे कुछ समय के लिए परेशान कर रहा है। मैंने php.ini में सुझाए गए मान को बदल दिया और समस्या उत्पन्न होती रही। मुझे अपने index.php में समान config value मिली और साथ ही निजी / Zend / session.php। तो यह थोड़ा गहरा देखने लायक है अगर समस्या बनी रहती है। मुझे उम्मीद है कि यह किसी के लिए उपयोगी है।

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