2010-05-28 7 views
25

मैं वर्तमान में Zend_Auth का उपयोग कर एक नए एप्लिकेशन पर काम कर रहा हूं लेकिन, किसी भी कारण से, इस त्रुटि संदेश किसी भी स्थान पर दिखाया गया है, पूरी तरह से बेतरतीब ढंग से (या तो यह तेजी)Zend_Session/Zend_Auth यादृच्छिक रूप से फेंकता है त्रुटि संदेश ps_files_cleanup_dir: opendir (/ var/lib/php5) विफल: अनुमति अस्वीकार (13)

Zend_Session::start() - /home/hannes/workspace/develop/library/Zend/Session.php(Line:480): # 8 त्रुटि session_start() [खाता है शुरू]: ps_files_cleanup_dir: opendir (/ var/lib/PHP5) विफल: अनुमति अस्वीकृत (13) सरणी

  • # 0 /home/hannes/workspace/develop/library/Zend/Session/Namespace.php(143): Zend_Session :: प्रारंभ (सत्य)
  • # 1/घर/कान/वर्कस्पेस/विकास/पुस्तकालय/ज़ेंड/ऑथ/स्टोरेज/सत्र.पीपी (87): Zend_Session_Namespace -> __ निर्माण ('Zend_Auth')
  • # 2 /home/hannes/workspace/develop/library/Zend/Auth.php(91): Zend_Auth_Storage_Session-> __construct()
  • # 3 /home/hannes/workspace/develop/library/Zend/Auth.php(141): Zend_Auth-> getStorage()
  • # 4/घर/हैनेस/कार्यक्षेत्र/विकसित/xxxxxxx/एप्लिकेशन/नियंत्रक/AdminController.php (10): Zend_Auth-> hasIdentity()
  • # 5 /home/hannes/workspace/develop/library/Zend/Controller/Action.php(133): AdminController-> init()
  • # 6/घर/कान/वर्कस्पेस/विकास/लाइब्रेरी/ज़ेंड/नियंत्रक /Dispatcher/Standard.php(262): Zend_Controller_Action -> __ निर्माण (ऑब्जेक्ट (Zend_Controller_Request_Http), वस्तु (Zend_Controller_Response_Http), सरणी)
  • # 7 /home/hannes/workspace/develop/library/Zend/Controller/Front.php (954): Zend_Controller_Dispatcher_Standard-> प्रेषण (ऑब्जेक्ट (Zend_Controller_Request_Http), वस्तु (Zend_Controller_Response_Http))
  • # 8 /home/hannes/workspace/develop/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front- > प्रेषण()
  • # 9/घर/हैन एस/वर्कस्पेस/डेवलपमेंट/लाइब्रेरी/ज़ेंड/एप्लीकेशन.एफ़पी (366): Zend_Application_Bootstrap_Bootstrap-> रन()
  • # 10 /home/hannes/workspace/develop/xxxxxxx/public/index.php(26): Zend_Aplication- > रन()
  • # 11 {मुख्य}

उत्तर

12

एक समाधान एक लिखने योग्य निर्देशिका के लिए php.ini फ़ाइल में session.save_path स्थापित करने के लिए है। उदाहरण के लिए : session.save_path = "/ tmp"। पहले उदाहरण में सत्र कचरा संग्रह को बंद करना एक अच्छा विचार नहीं है। दूसरा उदाहरण उबंटू 10.04

+0

सरल और काम कर रहे – Hannes

+0

महान समाधान। – typeoneerror

+10

क्षमा करें, बस यहाँ आ गया। यह एक बुरा समाधान है। क्यूं कर? क्योंकि यह इरादा है कि रूट के अलावा कोई भी इस निर्देशिका में प्रवेश नहीं कर सकता है। मुझे लगता है कि एक वेबसर्वर php चल रहा है, सत्र निर्देशिका सबसे कमजोर dirs में से एक है। मान लें कि आपके पास एक शोषक वेबपैप है, जो आपको/tmp तक पहुंच पढ़ने देता है, हमलावर किसी भी सत्र को हाइजैक कर सकता है जो वर्तमान में केवल फ़ाइल नाम प्राप्त करके सक्रिय है। भगवान जानता है कि सत्र में कौन सा कमजोर डेटा है। संक्षेप में, यह/टीएमपी के तहत सत्रों को बंद करने के लिए एक बहुत ही खराब विचार है। कहानी का अंत! :) – evildead

16

जाहिर है इस मुद्दे ज्यादातर (केवल?) को प्रभावित कर रहा Debian/Ubuntu आधारित प्रणाली और स्वत: सत्र कचरा संग्रहण के साथ क्या करना है।

चर session.gc_probability php.ini जिसका अर्थ है चलाने के लिए और निर्देशिका/var/lib/PHP5 जहां php सत्र है साफ करने के लिए कचरा कलेक्टर के लिए 1% संभावना है में 1 करने के लिए स्थापित किया गया था संग्रहीत।

स्पष्ट रूप से यह फ़ोल्डर www-data द्वारा लिखने योग्य नहीं है जिसके परिणामस्वरूप त्रुटि हुई है और ज़ेंड अपवाद फेंक रहा है। Session.gc_probability 0 को सेट करने से समस्या हल हो गई। सत्र फ़ोल्डर को क्रॉन नौकरी द्वारा वैसे भी साफ किया जाता है, इसलिए PHP कचरा कलेक्टर को चलाने के लिए भी कोई आवश्यकता नहीं होती है।

http://somethingemporium.com/2007/06/obscure-error-with-php5-on-debian-ubuntu-session-phpini-garbage

+0

उपयोग कर रहे हैं पहले से ही है कि एक की कोशिश की, मुझे 1 से लाया 20 करने के लिए 20 में से असफल 20 :( – Hannes

+1

@Hannes से बाहर विफल रहता है: से आप कुछ गलत किया था – evildead

+0

@evildead! नहीं ... – Hannes

5

से मैं सिम्फोनी ढांचा के साथ इस समस्या थी भी, समस्या php सत्र भंडारण निर्देशिका करने की अनुमति नहीं है। सत्र सहेजें निर्देशिका को कहीं भी लिखने योग्य में बदलें।Zend फ्रेमवर्क बूटस्ट्रैप config आरं में:

resources.session.save_path = APPLICATION_PATH "/../data/session" 
11

पर काम नहीं करता है वास्तव में session.save_path की निर्देशिका को बदलकर कचरा संग्रह बंद कर देता है। यही कारण है कि यह अब आपके लिए काम करता है। आप कचरा संग्रहण चाहते हैं तो आप php उपयोगकर्ता "www-डेटा"

chown www-डेटा/var/lib/PHP5

विकल्प में आप के लिए एक कचरा संग्रहण स्क्रिप्ट लिख सकते हैं करने के लिए मूल निर्देशिका स्वामी को बदल सकते नई निर्देशिका।

+0

यह मेरे लिए – easyrider

1

मुझे पहली ज़ेंड फ्रेमवर्क का उपयोग करके एमएएमपी के साथ ओएस एक्स 10.8.4 पर यह समस्या मिली है। session.save_path के लिए निर्देशिका php.ini में डिफ़ॉल्ट रूप से /Applications/MAMP/tmp/php है। मैं केवल उस निर्देशिका में सबकुछ हटाकर इसे हल करने में सक्षम था।

1

आप PHP 7,0

sudo chown www-data:www-data /var/lib/php/sessions 
+0

उहम के लिए काम किया, धन्यवाद ... मैंने कभी भी इस समस्या को हल नहीं किया, लेकिन दूसरी तरफ - यह 7 साल पहले था: डी – Hannes