Sự cố IIS với Drupal - Trình quản lý cập nhật: Cập nhật thất bại! Các thư mục bị khóa bởi php-cgi.exe


9

Tôi gặp một số vấn đề khi sử dụng "Trình quản lý cập nhật" trên GUI. Một số thư mục bị khóa php-cgi.exevà do đó, việc thay thế các thư mục gốc bằng các thư mục mới được tải xuống (mới hơn) không thành công.
NHƯNG tôi phải đề cập đến rằng nó không phải là một vấn đề cho phép, vì các module có thể được cài đặt thông qua "Cài đặt từ một URL" trên /admin/modules/install, và làm việc mà không có một vấn đề.

Hãy lấy một ví dụ:

  1. Trang cập nhật có sẵn ( /admin/reports/updates/update):

    Cập nhật có sẵn

    Bây giờ tôi kiểm tra mô-đun Chọn (hoặc khác) sẽ được cập nhật ( không quan trọng tôi chọn mô-đun nào , kết quả đều giống nhau !! vì vậy đây chỉ là một ví dụ).

  2. Tôi nhấn nút "Tải xuống các cập nhật này" .

  3. OK, phiên bản cập nhật của mô-đun được tải xuống mà không gặp sự cố:
    " Cập nhật được tải xuống thành công ": Cập nhật tải xuống thành công
  4. Bây giờ tôi bấm vào Tiếp tục .
  5. Đây là lỗi. Kết quả:
    " Cập nhật thất bại! Xem nhật ký bên dưới để biết thêm thông tin.
    Select_or_other
    • Lỗi cài đặt / cập nhật
    • Truyền tệp không thành công, lý do: Không thể sao chép D:/Projects/web/drupal-7/tmp/update-extraction-6d8993ac/select_or_other/LICENSE.txtvào /Projects/web/drupal-7/htdocs/sites/all/modules/select_or_other/LICENSE.txt. " Cập nhật thất bại!
  6. OK, tôi bắt đầu cố gắng kiểm tra những lý do có thể.
    • Đây là cấu trúc thư mục Drupal của tôi trông như thế nào : Cấu trúc thư mục TC. Tôi đặt ../tmplà thư mục tạm thời (trong /admin/config/media/file-system), các tệp Drupal nằm trong htdocs. Điều này là chính xác, vì tôi có thể cài đặt các mô-đun thông qua GUI, như tôi đã đề cập ở trên.
    • Khi tôi cố gắng vào htdocs/sites/all/modules/select_or_otherthư mục, tôi không thể, bởi vì tôi nhận được "Truy cập bị từ chối trong tệp ......sites/all/modules/select_or_other!" khi mở trong Total Commander và " ...sites/all/modules/select_or_otherkhông thể truy cập. Truy cập bị từ chối" khi mở trong Windows Explorer : cố gắng mở thư mục trong Total Commander,cố gắng mở thư mục trong Windows Explorer
    • OK, tôi nhấp chuột phải vào thư mục và mở Unlocker thông qua trợ lý của nó trong menu ngữ cảnh. Nó nói rằng thư mục này bị khóa bởi php-cgi.exe: Unlocker - thư mục bị khóa bởi php-cgi.exe Tôi nhấp vào "Mở khóa tất cả" và thư mục hiện có thể bị xóa (vì nó không bị khóa nữa php-cgi.exe), vì vậy nó chỉ đơn giản là
    • Tôi có thể tìm thấy thư mục của mô-đun select_or_other được cập nhật trong tmp: thư mục mô-đun được cập nhật trong <code> tmp </ code>
    • Vì vậy, tôi phải tự di chuyển nó vào sites/all/modulesthư mục.

Điều gì có thể là lý do có thể của việc khóa thư mục bằng cách php-cgi.exe? (Có lẽ của Windows cache Extension 1.1 cho PHP 5.3 được cài đặt thông qua Web Platform Installer? Nhưng nếu có, tại sao là ví dụ việc xóa hình ảnh hoặc tương tự thông qua giao diện làm việc chính xác?)
Tôi có thể làm gì để tránh vấn đề này, và để cho "Update quản lý "làm việc?


Tôi đang thấy chính xác hành vi tương tự với Drupal 7.15 trên IIS7 / 2008R2. Nó sẽ là tuyệt vời để khắc phục điều này.
Nic

@Nic: Mình đồng ý! :)
Sk8erPeter

Tôi đã thấy điều này không liên tục. Vì tò mò không làm mới hồ bơi ứng dụng của bạn mở khóa là tốt?
Brent

2
Tôi biết điều đó không đúng chủ đề, nhưng tôi phải nói điều đó - chạy khỏi Drupal trên IIS. Như tôi có thể thấy trên các ảnh chụp màn hình, bạn có thể đang sử dụng nó để phát triển cục bộ. Kiểm tra WAMP hoặc Acquia Dev Desktop . Nếu bạn chỉ đơn giản là phải sử dụng nó trên một máy chủ sản xuất, hãy bỏ qua nhận xét của tôi :) Tôi phải sử dụng IIS cho một số trang web nhất định và cho đến nay nó vẫn chưa phải là một trải nghiệm tốt.
Aram Boyajyan

@Brent: Tôi không biết. Sau khi chạy một trang trong Drupal, các tệp và thư mục dường như bị khóa trong một khoảng thời gian không xác định. Nhân tiện, tôi cũng đang sử dụng Drush và khi tôi muốn cập nhật một mô-đun bằng cách sử dụng drush up -y, tôi gặp phải một vấn đề tương tự: Tôi phải mở khóa các tệp và thư mục này bằng Unlocker để làm cho nó hoạt động, nếu không tôi nhận được thông báo lỗi rằng thư mục không thể được ghi / xóa và quá trình cập nhật bị gián đoạn. Nếu tôi sử dụng Unlocker TRƯỚC KHI chạy quá trình này, bản cập nhật thành công.
Sk8erPeter

Câu trả lời:


1

điều này không an toàn cho phép ghi tệp từ giao diện người dùng Drupal để cập nhật các mô-đun, thay vì sử dụng ftp này.

nhưng nếu bạn muốn thì hãy vào bảng điều khiển lưu trữ khám phá thư mục httpdocs nhấp chuột phải và sau đó được phép, bây giờ trong quyền cho phép viết cho người dùng nhóm ứng dụng,

Cảm ơn


0

Lý do cho php-cgi để có Khóa là vì cách "đặc biệt" của windows xử lý truy cập tệp và php / iis xử lý "bộ đệm". Về cơ bản, bạn chỉ cần tạo thư mục và cố gắng truy cập nó, nhưng tay cầm tạo ra nó không được phát hành (vì vậy nó vẫn bị khóa). Đây không phải là một vấn đề nghiêm trọng, đó là vấn đề IIS / PHP Và không có cách giải quyết nào mà tôi có thể tìm thấy.

Về cơ bản, làm theo lời khuyên cơ bản về việc không sử dụng IIS là tốt nhất, tôi đã thấy vấn đề này không chỉ là vấn đề với IIS mà tôi đã giải quyết bằng cách chuyển sang apache HTTPD (trên win32). Hãy nhớ rằng đó là để quay lại trường học, với một dự án mà tôi bắt buộc phải sử dụng windows 2000.

cách tốt nhất mà tôi biết khi chạy drupal trên windows là thông qua apache (vì xử lý nội bộ của php).


0

Một số ý tưởng để đào đúng hướng:

Nếu bạn có cùng một vấn đề từ Drush, thì tôi không chắc đây có phải là sự cố IIS không. Có phải Drush không chỉ thực thi PHP từ dòng lệnh mà không có IIS? Bạn có thể thử điều này bằng cách dừng IIS (iisreset / stop) và sau đó chạy lệnh cập nhật Drush và tôi sẽ mong bạn nhận được kết quả tương tự.

Một điều khác (xin lỗi, tôi không đủ uy tín để nhận xét trực tiếp về câu trả lời của Lawri):

"Về cơ bản, bạn chỉ cần tạo thư mục và cố gắng truy cập nó, nhưng tay cầm tạo ra nó không được phát hành"

Điều này có thực sự đúng không? Từ bài viết gốc, có vẻ như anh ta đã tạo thư mục trong "tmp", nhưng khóa nằm trên thư mục đã có trong "httpdocs".

Tôi đoán là php-cgi cố gắng sao chép từ tmp sang httpdocs, vì một lý do và không xóa khóa. Vì vậy, khi bạn điều tra sau thất bại, bạn sẽ thấy một khóa trên httpdocs, nhưng tôi nghĩ lý do ban đầu cho sự thất bại không phải là khóa, đó có thể là vấn đề cấp phép trên thư mục tmp!


nếu đó là trường hợp anh ta cũng không thể di chuyển 'bằng tay', thư mục sẽ được tạo như một phần của quá trình nâng cấp. IIS có liên quan thông qua giao diện CGI của nó, được biết là gây ra các lỗi lạ. và lỗi được báo cáo không phải là lỗi "không thể truy cập" mà là "không thể sao chép vào".
LvB
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.