Drupal के साथ IIS समस्या - अद्यतन प्रबंधक: अद्यतन विफल! निर्देशिकाएँ php-cgi.exe द्वारा लॉक किए गए हैं


9

जीयूआई पर "अपडेट मैनेजर" का उपयोग करते समय मुझे कुछ समस्या है। कुछ निर्देशिकाएं लॉक हो जाती हैं php-cgi.exe, और इस प्रकार नए डाउनलोड किए गए (जो नए हैं) मूल निर्देशिकाओं का प्रतिस्थापन सफल नहीं होता है।
लेकिन मैं, क्योंकि मॉड्यूल के माध्यम से स्थापित कर सकते हैं कि यह एक अनुमति मुद्दा नहीं है उल्लेख करना होगा "किसी URL से स्थापित करें" पर /admin/modules/install, और एक समस्या के बिना काम करते हैं।

आइए एक उदाहरण लेते हैं:

  1. उपलब्ध अपडेट पृष्ठ ( /admin/reports/updates/update):

    उपलब्ध अद्यतन

    अब मैं चयनित (या अन्य) मॉड्यूल को अपडेट करने की जांच करता हूं ( यह कोई फर्क नहीं पड़ता कि मैं किस मॉड्यूल का चयन करता हूं , परिणाम समान हैं - इसलिए यह सिर्फ एक उदाहरण है)।

  2. मैंने "ये अपडेट डाउनलोड करें" बटन दबाया।

  3. ठीक है, मॉड्यूल का अद्यतन उदाहरण बिना किसी समस्या के डाउनलोड हो जाता है:
    " अपडेट सफलतापूर्वक डाउनलोड किया गया ": अपडेट सफलतापूर्वक डाउनलोड किए गए
  4. अब मैं Continue पर क्लिक करता हूँ ।
  5. यहाँ त्रुटि आती है। परिणाम:
    " अपडेट विफल रहा । अधिक जानकारी के लिए नीचे लॉग देखें।
    select_or_other
    • स्थापित करने / अद्यतन करने में त्रुटि
    • फ़ाइल स्थानांतरण विफल, कारण: इसकी प्रतिलिपि नहीं बनाई D:/Projects/web/drupal-7/tmp/update-extraction-6d8993ac/select_or_other/LICENSE.txtजा सकती /Projects/web/drupal-7/htdocs/sites/all/modules/select_or_other/LICENSE.txt" अपडेट विफल हुआ!
  6. ठीक है, मैं संभावित कारणों का निरीक्षण करने की कोशिश करना शुरू कर रहा हूं।
    • यहाँ मेरी Drupal निर्देशिका संरचना लगता है कि क्या करना है: टीसी निर्देशिका संरचना। मैं ../tmpअस्थायी निर्देशिका ( /admin/config/media/file-system) में सेट करता हूं , Drupal फाइलें अंदर हैं htdocs। यह सही है, क्योंकि मैं जीयूआई के माध्यम से मॉड्यूल स्थापित कर सकता हूं, जैसा कि मैंने ऊपर उल्लेख किया है।
    • जब मैं htdocs/sites/all/modules/select_or_otherनिर्देशिका में प्रवेश करने की कोशिश करता हूं, तो मैं नहीं कर सकता, क्योंकि मुझे "फ़ाइल पर प्रवेश निषेध"......sites/all/modules/select_or_other मिलता है ! जब कुल कमांडर में खोलने, और " ...sites/all/modules/select_or_otherसुलभ नहीं है प्रवेश निषेध है।" जब Windows Explorer में उद्घाटन: कुल कमांडर में निर्देशिका खोलने की कोशिश कर रहा है,विंडोज एक्सप्लोरर में डायरेक्टरी खोलने की कोशिश की जा रही है
    • ठीक है, मैं फ़ोल्डर पर राइट क्लिक करता हूं, और संदर्भ मेनू में इसके सहायक के माध्यम से अनलॉकर खोलें। यह कहता है कि यह निर्देशिका लॉक है php-cgi.exe: अनलॉकर - निर्देशिका php-cgi.exe द्वारा लॉक की गई है मैं "अनलॉक ऑल" पर क्लिक करता हूं, और फ़ोल्डर अब अपने आप से डिलीट हो सकता है (जैसा कि यह अब तक लॉक नहीं हुआ है php-cgi.exe), इसलिए यह बस
    • मुझे अपडेट की गई select_or_other मॉड्यूल की निर्देशिका इसमें मिल सकती है tmp: <code> tmp </ code> में अद्यतन मॉड्यूल की निर्देशिका
    • इसलिए मुझे इसे मैन्युअल रूप से sites/all/modulesनिर्देशिका में ले जाना होगा ।

निर्देशिका के लॉकअप के संभावित कारण क्या हो सकते हैं php-cgi.exe? (हो सकता है कि Windows 5.3 एक्सटेंशन PHP 1.1 के लिए वेब प्लेटफ़ॉर्म इंस्टालर के माध्यम से स्थापित किया गया हो; लेकिन यदि हाँ, तो उदाहरण के लिए छवियों को हटाने या GUI के माध्यम से समान रूप से सही तरीके से काम करता है?)
मैं इस समस्या से बचने के लिए क्या कर सकता हूं, और "अपडेट" करूं प्रबंधक "काम?


मैं IIS7 / 2008R2 पर Drupal 7.15 के साथ बिल्कुल वैसा ही व्यवहार देख रहा हूं। इसे ठीक करना बहुत अच्छा होगा।
निक

@ एनआईसी: मैं सहमत हूँ! :)
Sk8erPeter

मैंने इसे रुक-रुक कर देखा है। बाहर जिज्ञासा के रूप में अच्छी तरह से अपने app पूल अनलॉक ताज़ा करता है?
ब्रेंट

2
मुझे पता है कि यह विषय है, लेकिन मुझे यह कहना है - IIS पर Drupal से दूर भागना। जैसा कि मैं स्क्रीनशॉट पर देख सकता हूं, आप इसे स्थानीय विकास के लिए उपयोग कर सकते हैं। की जाँच करें WAMP या Acquia देव डेस्कटॉप । यदि आपको बस इसे किसी प्रोडक्शन सर्वर पर उपयोग करना है, तो मेरी टिप्पणी को अनदेखा करें :) मुझे कुछ साइटों के लिए IIS का उपयोग करना है और अब तक यह एक अच्छा अनुभव नहीं रहा है।
अराम बोयाजयन

@ बेंट: मुझे नहीं पता। Drupal में एक पेज चलाने के बाद, फ़ाइलों और निर्देशिकाओं को एक अज्ञात अवधि के लिए लॉक होने लगता है। वैसे, मैं ड्रश का भी उपयोग कर रहा हूं , और जब मैं एक मॉड्यूल का उपयोग करके अपडेट करना चाहता हूं, तो मुझे एक drush up -yही समस्या का अनुभव होता है: मुझे इसे काम करने के लिए अनलॉकर के साथ इन फ़ाइलों और निर्देशिकाओं को अनलॉक करना होगा, अन्यथा मुझे त्रुटि संदेश मिलता है कि ये निर्देशिकाओं को लिखा / हटाया नहीं जा सकता है, और अद्यतन प्रक्रिया बाधित हो जाती है। यदि मैं इस प्रक्रिया को चलाने वाले अनलॉकर का उपयोग करता हूं, तो अद्यतन सफल है।
Sk8erPeter

जवाबों:


1

यह सुरक्षित नहीं है कि इस अद्यतन एफ़टीपी के बजाय, अद्यतन मॉड्यूल के लिए Drupal उपयोगकर्ता इंटरफ़ेस से फ़ाइल लिखने की अनुमति दें।

लेकिन अगर आप चाहते हैं तो httpdocs डायरेक्टरी को देखने के लिए होस्टिंग के plesk पैनल पर जाएं और फिर अनुमति पर क्लिक करें, अब अनुमति में एप्लिकेशन पूल उपयोगकर्ता को लिखित अनुमति दें,

धन्यवाद


0

लॉक होने के लिए php-cgi का कारण "अजीबोगरीब" तरीका है जिससे विंडोज़ फ़ाइल एक्सेस को हैंडल करता है, और php / iis "कैशिंग" को हैंडल करता है। मूल रूप से आपने सिर्फ डायरेक्टरी बनाई और इसे एक्सेस करने की कोशिश की, लेकिन इसे बनाने वाले हैंडल को रिलीज़ नहीं किया गया (इसलिए यह अभी भी लॉक था)। यह एक drupal मुद्दा नहीं है, इसका IIS / PHP मुद्दा है और ऐसा कोई ज्ञात समाधान नहीं है जो मुझे मिल सके।

Basicly, do the base advise of not using IIS is the best, I have seen this problem in more than just drupal with IIS that I solved by moving to apache HTTPD (on win32). Mind you that was for back at school, with a project where I was required to use windows 2000.

the best way I know of running drupal on windows is through apache (because of the internal handling of php).


0

Some ideas to dig in the right direction:

If you have the same problem from Drush, then I am not sure if this is an IIS problem. Is Drush not just executing PHP from the command line without IIS? You can try this by stopping IIS (iisreset /stop) and then running the Drush update command and I would expect you to get the same result.

The other thing (sorry, I don't have enough reputation to directly comment on Lawri's answer):

"Basically you just created the directory and tried to access it, but the handle that created it was not released"

Is this really true? From the the original post it looks like he created the folder in "tmp", but the lock is on the already existing folder in "httpdocs".

My guess is that php-cgi tries to copy from tmp to httpdocs, fails for a reason and doesn't remove the lock. So when you investigate after the failure, you see a lock on httpdocs, but I think the initial reason for failing is not a lock, it might be a permission issue on the tmp folder after all!


if that was the case he could also not move it 'by hand', the directory gets created as part of the upgrade process. IIS is involved through its CGI interface, that is known for causing weird errors. and the error reported is not the "can not access" but "can not copy to" error.
LvB
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.