Drupal ile ilgili IIS sorunu - Güncelleme yöneticisi: Güncelleme başarısız! Dizinler php-cgi.exe tarafından kilitlenir


9

GUI'de "Güncelleme yöneticisi" kullanılırken sorun yaşıyorum. Bazı dizinler kilitlenir php-cgi.exeve bu nedenle orijinal dizinlerin (daha taze olan) yeni indirilen dizinlerle değiştirilmesi başarılı olmaz.
AMA bunun bir izin sorunu olmadığını belirtmek zorundayım, çünkü modüller "URL'den yükle" üzerinden kurulabilir /admin/modules/installve sorunsuz çalışabilir.

Bir örnek verelim:

  1. Mevcut güncellemeler sayfası ( /admin/reports/updates/update):

    Mevcut güncellemeler

    Şimdi güncellenecek Select (veya diğer) modülünü kontrol ediyorum ( hangi modülü seçtiğim önemli değil , sonuçlar aynı !! bu yüzden sadece bir örnek).

  2. Ben vurmak "bu güncellemeleri indir" butonuna.

  3. Tamam, modülün güncellenmiş örneği sorunsuz indiriliyor:
    " Güncellemeler başarıyla indirildi ": Güncellemeler başarıyla indirildi
  4. Şimdi Devam'a tıklıyorum .
  5. İşte hata geliyor. Sonuç:
    " Güncelleme başarısız oldu! Fazla bilgi için aşağıdaki günlüğüne bakın.
    Select_or_other
    • Yükleme / güncelleme hatası
    • Dosya Transferi, nedenini başarısız oldu: kopyalanamıyor D:/Projects/web/drupal-7/tmp/update-extraction-6d8993ac/select_or_other/LICENSE.txtiçin /Projects/web/drupal-7/htdocs/sites/all/modules/select_or_other/LICENSE.txt. " Güncelleştirme başarısız!
  6. Tamam, olası nedenleri incelemeye çalışıyorum.
    • İşte benim Drupal dizin yapısı görünüyor ne gibi: TC dizin yapısı. ../tmpGeçici dizin (in /admin/config/media/file-system) olarak ayarladım , Drupal dosyaları var htdocs. Yukarıda belirtildiği gibi GUI üzerinden modüller yükleyebildiğim için bu doğrudur.
    • htdocs/sites/all/modules/select_or_otherDizine girmeye çalıştığımda , "Dosyada erişim reddedildi ......sites/all/modules/select_or_other!" Total Commander açarken ve " ...sites/all/modules/select_or_othererişilebilir değil erişim engellendi." Windows Explorer'da açılış: Total Commander'da dizin açmaya çalışıyor,Windows Gezgini'nde dizin açmaya çalışıyor
    • Tamam, klasörü sağ tıklıyorum ve içerik menüsündeki yardımcısı aracılığıyla Unlocker'ı açıyorum . Bu dizinin kilitli olduğunu söylüyor php-cgi.exe: Unlocker - php-cgi.exe tarafından kilitlenmiş dizin "Tümünün Kilidini Aç" ı tıklıyorum ve klasör artık kendisinden silinebiliyor (artık kilitlenmediğinden php-cgi.exe), bu yüzden basitçe
    • Güncellenmiş select_or_other modülünün dizinini şurada bulabilirim tmp: <code> tmp </code> içindeki güncellenmiş modül dizini
    • bu yüzden elle sites/all/modulesdizine taşımak zorunda .

Dizinin kilitlenmesinin olası nedenleri neler olabilir php-cgi.exe? (Belki PHP 5.3 için Windows Önbellek Uzantısı 1.1 Web Platformu Yükleyicisi aracılığıyla yüklenir? Ancak evet ise, neden örneğin GUI aracılığıyla görüntülerin veya benzerinin silinmesi doğru çalışıyor?)
Bu sorunu önlemek için ne yapabilirim ve "Güncelleştir müdür "iş?


IIS7 / 2008R2'de Drupal 7.15 ile tam olarak aynı davranışı görüyorum. Bunu düzeltmek harika olurdu.
Nic

@Nic: Katılıyorum! :)
Sk8erPeter

Bunu aralıklı olarak gördüm. Merak ettiğiniz uygulama havuzunuzu yenilemek de kilidini açıyor mu?
Brent

2
Konu dışı olduğunu biliyorum, ama söylemeliyim - IIS'de Drupal'dan kaçın. Ekran görüntülerinde görebildiğim gibi, bunu yerel kalkınma için kullanıyor olabilirsiniz. WAMP veya Acquia Dev Desktop'a göz atın . Sadece bir üretim sunucusunda kullanmanız gerekiyorsa, yorumumu görmezden gelin :) IIS'yi belirli siteler için kullanmak zorundayım ve şimdiye kadar iyi bir deneyim olmadı.
Aram Boyajyan

@Brent: Bilmiyorum. Drupal'da bir sayfa çalıştırdıktan sonra, dosyalar ve dizinler bilinmeyen bir süre boyunca kilitli görünüyor. Bu arada, Drush'ı da kullanıyorum ve kullanarak bir modülü güncellemek istediğimde drush up -y, aynı sorunu yaşıyorum: Bu dosyaların ve dizinlerin kilidini açmak için Unlocker ile kilidini açmam gerekiyor, aksi takdirde bu hata mesajını alıyorum dizinler yazılamaz / kaldırılamaz ve güncelleme işlemi yarıda kesilir. Bu işlemi çalıştırmadan ÖNCE Kilit Açıcı kullanırsam güncelleme başarılı olur.
Sk8erPeter

Yanıtlar:


1

Bu modülleri güncellemek için Drupal kullanıcı arabiriminden ftp kullanmak yerine dosya yazmaya izin veren güvenli değildir.

ancak isterseniz http://www.resdocs dizininde sağ tıklayıp ardından izin üzerine barındırma plesk paneline gidin, şimdi izinli Uygulama havuzu kullanıcısına yazma izni verin,

Teşekkürler


0

Php-cgi'nin Lock'a sahip olmasının nedeni, pencerelerin dosya erişimini ve php / iis "önbelleğe almayı" "tuhaf" yoludur. Temel olarak dizini oluşturdunuz ve ona erişmeye çalıştınız, ancak onu oluşturan tanıtıcı serbest bırakılmadı (bu yüzden hala kilitli). Bu bir drupal sorunu değil, onun bir IIS / PHP sorunu Ve bulabildiğim bilinen bir geçici çözüm yok.

Temel olarak, IIS kullanmamanın temel tavsiyesini yapın, bu sorunu apache HTTPD'ye (win32'de) geçerek çözdüğüm IIS ile sadece drupaldan daha fazla gördüm. Windows 2000 kullanmam gereken bir proje ile okula geri döndüğünüze dikkat edin.

Windows üzerinde drupal çalışan biliyorum en iyi yolu (php iç işleme nedeniyle) apache üzerinden olduğunu.


0

Doğru yönde kazmak için bazı fikirler:

Drush ile aynı sorunu yaşıyorsanız, bunun bir IIS sorunu olup olmadığından emin değilim. Drush, IIS'yi komut satırı üzerinden yalnızca IIS yürütmekle kalmıyor mu? Bunu IIS'yi (iisreset / stop) durdurup ardından Drush update komutunu çalıştırarak deneyebilirsiniz ve aynı sonucu almanızı beklerim.

Başka bir şey (üzgünüm, Lawri'nin cevabı hakkında doğrudan yorum yapmak için yeterli itibarım yok):

"Temel olarak dizini oluşturdunuz ve ona erişmeye çalıştınız, ancak onu oluşturan tanıtıcı serbest bırakılmadı"

Bu gerçekten doğru mu? Orijinal gönderiden, klasörü "tmp" de oluşturmuş gibi görünüyor, ancak kilit "httpdocs" içindeki mevcut klasörde.

Benim tahminim php-cgi'nin tmp'den httpdocs'a kopyalamaya çalışması, bir nedenden dolayı başarısız olması ve kilidi kaldırmamasıdır. Başarısızlıktan sonra araştırdığınızda, httpdocs üzerinde bir kilit görüyorsunuz, ancak başarısız olmanın ilk nedeninin bir kilit olmadığını düşünüyorum, sonuçta tmp klasöründe bir izin sorunu olabilir!


bu durumda 'elle' taşıyamazsa, dizin yükseltme işleminin bir parçası olarak oluşturulur. IIS, garip hatalara neden olduğu bilinen CGI arabirimi ile ilgilidir. ve bildirilen hata "erişilemiyor" değil "kopyalanamıyor" hatasıdır.
LvB
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.