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:
Halaman pembaruan yang tersedia (
/admin/reports/updates/update
):Sekarang saya centang Pilih (atau lainnya) modul yang akan diperbarui ( tidak masalah modul mana yang saya pilih , hasilnya sama !! jadi itu hanya sebuah contoh).
Saya menekan tombol "Unduh pembaruan ini" .
- Oke, instance modul yang diperbarui akan diunduh tanpa masalah:
" Pembaruan berhasil diunduh ": - Sekarang saya klik Lanjutkan .
- 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.txt
ke/Projects/web/drupal-7/htdocs/sites/all/modules/select_or_other/LICENSE.txt
. "
- OK, saya mulai mencoba memeriksa alasan yang mungkin.
- Inilah yang Drupal saya struktur direktori terlihat seperti: . Saya menetapkan
../tmp
menjadi direktori sementara (dalam/admin/config/media/file-system
), file Drupal berada dihtdocs
. 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_other
direktori, 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_other
tidak dapat diakses Akses ditolak." ketika membuka Windows Explorer: , - OK, saya klik kanan foldernya, dan buka Unlocker melalui asistennya di menu konteks. Dikatakan direktori ini dikunci oleh
php-cgi.exe
: Saya klik "Unlock All", dan folder itu sekarang bisa dihapus sendiri (karena tidak dikunci lagi olehphp-cgi.exe
), jadi cukup - Saya dapat menemukan direktori select_or_other modul yang diperbarui di
tmp
: - jadi saya harus secara manual memindahkannya ke
sites/all/modules
direktori.
- Inilah yang Drupal saya struktur direktori terlihat seperti: . Saya menetapkan
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?
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.Jawaban:
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
sumber
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).
sumber
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):
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!
sumber