Masalah IIS dengan Drupal - Pembaruan manajer: Pembaruan gagal! Direktori dikunci oleh php-cgi.exe

9

Saya memiliki beberapa masalah saat menggunakan "Pembaruan manajer" pada GUI. Beberapa direktori dikunci php-cgi.exe, dan dengan demikian penggantian direktori asli dengan yang baru diunduh (yang lebih segar) tidak berhasil.
TAPI saya harus menyebutkan bahwa itu bukan masalah izin, karena modul bisa diinstal melalui "Install dari URL" pada /admin/modules/install, dan bekerja tanpa masalah.

Mari kita ambil contoh:

  1. Halaman pembaruan yang tersedia ( /admin/reports/updates/update):

    Pembaruan yang tersedia

    Sekarang saya centang Pilih (atau lainnya) modul yang akan diperbarui ( tidak masalah modul mana yang saya pilih , hasilnya sama !! jadi itu hanya sebuah contoh).

  2. Saya menekan tombol "Unduh pembaruan ini" .

  3. Oke, instance modul yang diperbarui akan diunduh tanpa masalah:
    " Pembaruan berhasil diunduh ": Pembaruan berhasil diunduh
  4. Sekarang saya klik Lanjutkan .
  5. Di sinilah kesalahannya. Hasilnya:
    " Pembaruan gagal! Lihat log di bawah ini untuk informasi lebih lanjut.
    Select_or_other
    • Kesalahan menginstal / memperbarui
    • File Transfer gagal, alasan: Tidak dapat menyalin D:/Projects/web/drupal-7/tmp/update-extraction-6d8993ac/select_or_other/LICENSE.txtke /Projects/web/drupal-7/htdocs/sites/all/modules/select_or_other/LICENSE.txt. " Pembaharuan gagal!
  6. OK, saya mulai mencoba memeriksa alasan yang mungkin.
    • Inilah yang Drupal saya struktur direktori terlihat seperti: Struktur direktori TC. Saya menetapkan ../tmpmenjadi direktori sementara (dalam /admin/config/media/file-system), file Drupal berada di htdocs. Ini benar, karena saya dapat menginstal modul melalui GUI, seperti yang saya sebutkan di atas.
    • Ketika saya mencoba memasuki htdocs/sites/all/modules/select_or_otherdirektori, saya tidak bisa, karena saya mendapat "Akses ditolak pada file ......sites/all/modules/select_or_other!" saat membuka di Total Commander, dan " ...sites/all/modules/select_or_othertidak dapat diakses Akses ditolak." ketika membuka Windows Explorer: mencoba membuka direktori di Total Commander,mencoba membuka direktori di Windows Explorer
    • OK, saya klik kanan foldernya, dan buka Unlocker melalui asistennya di menu konteks. Dikatakan direktori ini dikunci oleh php-cgi.exe: Unlocker - direktori dikunci oleh php-cgi.exe Saya klik "Unlock All", dan folder itu sekarang bisa dihapus sendiri (karena tidak dikunci lagi oleh php-cgi.exe), jadi cukup
    • Saya dapat menemukan direktori select_or_other modul yang diperbarui di tmp: direktori modul yang diperbarui di <code> tmp </code>
    • jadi saya harus secara manual memindahkannya ke sites/all/modulesdirektori.

Apa yang mungkin menjadi alasan penguncian direktori php-cgi.exe? (Mungkin Windows Cache Extension 1.1 untuk PHP 5.3 diinstal melalui Web Platform Installer? Tetapi jika ya, mengapa itu misalnya penghapusan gambar atau serupa melalui GUI berfungsi dengan benar?)
Apa yang dapat saya lakukan untuk menghindari masalah ini, dan biarkan "Perbarui manajer "bekerja?

Sk8erPeter
sumber
Saya melihat perilaku yang persis sama dengan Drupal 7.15 pada IIS7 / 2008R2. Akan bagus untuk memperbaikinya.
Nic
@Nic: Saya setuju! :)
Sk8erPeter
Saya telah melihat ini sebentar-sebentar. Karena penasaran, apakah menyegarkan juga kumpulan aplikasi Anda?
Brent
2
Saya tahu ini di luar topik, tetapi saya harus mengatakannya - lari dari Drupal di IIS. Seperti yang saya lihat di screenshot, Anda mungkin menggunakannya untuk pengembangan lokal. Lihat WAMP atau Acquia Dev Desktop . Jika Anda hanya perlu menggunakannya di server produksi, abaikan komentar saya :) Saya harus menggunakan IIS untuk situs-situs tertentu dan sejauh ini belum menjadi pengalaman yang baik.
Aram Boyajyan
@ Bos: Saya tidak tahu. Setelah menjalankan halaman di Drupal, file dan direktori tampaknya terkunci untuk periode yang tidak diketahui. Ngomong-ngomong, saya menggunakan Drush juga, dan ketika saya ingin memperbarui modul menggunakan drush up -y, saya mengalami masalah yang sama: Saya harus membuka kunci file dan direktori dengan Unlocker untuk membuatnya berfungsi, jika tidak saya mendapatkan pesan kesalahan bahwa ini direktori tidak dapat ditulis / dihapus, dan proses pembaruan akan terganggu. Jika saya menggunakan Unlocker SEBELUM menjalankan proses ini, pembaruan berhasil.
Sk8erPeter

Jawaban:

1

ini tidak aman yang memungkinkan untuk menulis file dari antarmuka pengguna Drupal untuk memperbarui modul, alih-alih ini menggunakan ftp.

tetapi jika Anda ingin kemudian pergi ke plesk panel hosting mengeksplorasi direktori httpdocs klik kanan dan kemudian atas izin, sekarang dalam izin memberikan izin menulis kepada pengguna aplikasi Pool,

Terima kasih

bhupendraosd
sumber
0

Alasan untuk php-cgi memiliki Kunci adalah karena cara "aneh" windows menangani akses file, dan php / iis menangani "caching". Pada dasarnya Anda baru saja membuat direktori dan mencoba mengaksesnya, tetapi pegangan yang membuatnya tidak dirilis (jadi itu masih terkunci). Ini bukan masalah drupal, ini masalah IIS / PHP Dan tidak ada solusi yang bisa saya temukan.

Pada dasarnya, lakukan saran dasar untuk tidak menggunakan IIS adalah yang terbaik, saya telah melihat masalah ini lebih dari sekadar drupal dengan IIS yang saya selesaikan dengan pindah ke apache HTTPD (pada win32). Pikiran Anda itu untuk kembali di sekolah, dengan proyek di mana saya diminta untuk menggunakan windows 2000.

cara terbaik yang saya tahu menjalankan drupal di windows adalah melalui apache (karena penanganan internal php).

LvB
sumber
0

Beberapa ide untuk digali ke arah yang benar:

Jika Anda memiliki masalah yang sama dari Drush, maka saya tidak yakin apakah ini merupakan masalah IIS. Apakah Drush tidak hanya menjalankan PHP dari baris perintah tanpa IIS? Anda dapat mencoba ini dengan menghentikan IIS (iisreset / stop) dan kemudian menjalankan perintah pembaruan Drush dan saya berharap Anda mendapatkan hasil yang sama.

Hal lain (maaf, saya tidak memiliki reputasi yang cukup untuk langsung mengomentari jawaban Lawri):

"Pada dasarnya kamu baru saja membuat direktori dan mencoba mengaksesnya, tetapi pegangan yang membuatnya tidak dirilis"

Apakah ini benar? Dari posting asli sepertinya dia membuat folder di "tmp", tetapi kunci ada di folder yang sudah ada di "httpdocs".

Dugaan saya adalah bahwa php-cgi mencoba menyalin dari tmp ke httpdocs, gagal karena suatu alasan dan tidak menghapus kunci. Jadi ketika Anda menyelidiki setelah kegagalan, Anda melihat kunci di httpdocs, tapi saya pikir alasan awal untuk gagal bukanlah kunci, itu mungkin masalah izin pada folder tmp!

dustinmoris
sumber
jika itu masalahnya dia juga tidak bisa memindahkannya 'dengan tangan', direktori akan dibuat sebagai bagian dari proses peningkatan. IIS terlibat melalui antarmuka CGI-nya, yang dikenal karena menyebabkan kesalahan aneh. dan kesalahan yang dilaporkan bukanlah kesalahan "tidak dapat mengakses" tetapi "tidak dapat menyalin ke".
LvB