Drupal의 IIS 문제-업데이트 관리자 : 업데이트 실패! php-cgi.exe에 의해 디렉토리가 잠김


9

GUI에서 "업데이트 관리자"를 사용할 때 문제가 있습니다. 일부 디렉토리는에 의해 잠기 php-cgi.exe므로 원래 디렉토리를 새로 다운로드 한 디렉토리 (보다 최신)로 바꾸지 못합니다.
모듈을 통해 설치받을 수 있기 때문에하지만, 그것은 권한 문제가 아니라고 언급해야 "URL에서 설치"/admin/modules/install문제없이 작업.

예를 들어 보자.

  1. 사용 가능한 업데이트 페이지 ( /admin/reports/updates/update) :

    사용 가능한 업데이트

    이제 업데이트 할 선택 (또는 다른) 모듈을 확인 하십시오 (선택한 모듈 은 중요하지 않습니다 . 결과는 동일합니다. 그래서 예제 일뿐입니다).

  2. 나는 명중 "이러한 업데이트를 다운로드" 버튼을 클릭합니다.

  3. 문제없이 모듈의 업데이트 된 인스턴스가 다운로드됩니다 :
    " 업데이트가 성공적으로 다운로드되었습니다 ": 업데이트가 성공적으로 다운로드되었습니다
  4. 이제 계속을 클릭하십시오 .
  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. OK, 나는 가능한 이유를 조사하기 시작했다.
    • Drupal 디렉토리 구조는 다음과 같습니다 TC 디렉토리 구조. 내가 설정 ../tmp임시 디렉토리 (의 수 /admin/config/media/file-system), 드루팔 파일에 있습니다 htdocs. 위에서 언급했듯이 GUI를 통해 모듈을 설치할 수 있으므로 이것은 정확합니다.
    • htdocs/sites/all/modules/select_or_other디렉토리 에 들어 가려고 할 때 "파일에 대한 액세스가 거부되었습니다 ......sites/all/modules/select_or_other!" 총 사령관에 열 때, 그리고 " ...sites/all/modules/select_or_other액세스 할 수 없습니다 액세스가 거부되었습니다." 때 Windows 탐색기에서 열기 : Total Commander에서 디렉토리를 열려고 함,Windows 탐색기에서 디렉토리를 열려고 시도
    • 좋아, 폴더를 마우스 오른쪽 버튼으로 클릭 하고 상황에 맞는 메뉴의 도우미를 통해 Unlocker 를 엽니 다 . 그것은이 디렉토리에 의해 잠겨 말한다 php-cgi.exe: Unlocker-php-cgi.exe에 의해 잠긴 디렉토리 나는 "잠금 해제 All"을 클릭하고, (가에 의해 더 이상 잠겨 있지됩니다으로 폴더는 이제 그 자체로 삭제 할 수 있습니다 php-cgi.exe그것은 그렇게 간단)
    • 업데이트 된 select_or_other 모듈의 디렉토리는 tmp다음 에서 찾을 수 있습니다 . <code> tmp </ code>에서 업데이트 된 모듈 디렉토리
    • 수동으로 sites/all/modules디렉토리 로 이동해야합니다 .

디렉토리를 잠그는 이유는 무엇입니까 php-cgi.exe? (웹 플랫폼 설치 프로그램을 통해 설치된 PHP 5.3 용 Windows Cache Extension 1.1일까요? 그렇다면, 예를 들어 GUI를 통해 이미지 또는 이와 유사한 삭제가 올바르게 작동하는 이유는 무엇입니까 ?) 이 문제를 피하려면 어떻게 해야합니까?
관리자 "작업?


IIS7 / 2008R2에서 Drupal 7.15와 정확히 동일한 동작을보고 있습니다. 이 문제를 해결하는 것이 좋습니다.
Nic

@ 닉 : 동의합니다! :)
Sk8erPeter

나는 이것을 간헐적으로 보았다. 호기심 때문에 앱 풀을 새로 고치면 잠금이 해제됩니까?
브렌트

2
나는 그것이 주제가 아닌 것을 알고 있지만, IIS의 Drupal에서 도망 치십시오. 스크린 샷에서 볼 수 있듯이 로컬 개발에 사용할 수 있습니다. WAMP 또는 Acquia Dev Desktop을 확인하십시오 . 프로덕션 서버에서 단순히 사용해야하는 경우 내 의견을 무시하십시오. :) 특정 사이트에 IIS를 사용해야하며 지금까지는 좋은 경험이 없었습니다.
Aram Boyajyan

@ 브렌트 : 모르겠다. Drupal에서 페이지를 실행 한 후 파일과 디렉토리가 알 수없는 기간 동안 잠긴 것 같습니다. 그건 그렇고, 내가 사용하고 Drush을 너무, 내가 사용하는 모듈을 업데이트 할 때 drush up -y나는 이러한 파일과 디렉토리의 잠금을 해제 할 수 있습니다, 저도 같은 문제가 발생 의 Unlocker를 , 그렇지 않으면 나는이 그 오류 메시지, 그것은 작동하도록 디렉토리를 쓰거나 제거 할 수 없으며 업데이트 프로세스가 중단됩니다. 이 프로세스를 실행하기 전에 Unlocker를 사용하면 업데이트가 완료된 것입니다.
Sk8erPeter

답변:


1

이것은 ftp 대신 모듈을 업데이트하기 위해 Drupal 사용자 인터페이스에서 파일을 쓸 수 있도록 안전하지 않습니다.

그러나 원하는 경우 httpdocs 디렉토리 탐색을 마우스 오른쪽 버튼으로 클릭 한 다음 권한에 따라 plesk 패널로 이동하십시오. 이제 권한에서 응용 프로그램 풀 사용자에게 쓰기 권한을 부여하십시오.

감사


0

php-cgi가 잠금을 갖는 이유는 Windows가 파일 액세스를 처리하는 "독특한"방식과 php / iis가 "캐싱"을 처리하기 때문입니다. 기본적으로 디렉토리를 만들고 액세스하려고 시도했지만 디렉토리를 만든 핸들이 해제되지 않았으므로 여전히 잠겨 있습니다. 이것은 드루팔 문제가 아니며 IIS / PHP 문제이며, 찾을 수있는 알려진 해결 방법이 없습니다.

기본적으로 IIS를 사용하지 않는 것이 가장 좋습니다. 아파치 HTTPD (win32에서)로 이동하여 해결 한 IIS의 drupal 이상 에서이 문제를 보았습니다. Windows 2000을 사용해야하는 프로젝트로 학교에 다시 돌아왔습니까?

내가 윈도우에서 drupal을 실행하는 가장 좋은 방법은 아파치를 통해하는 것입니다 (php의 내부 처리 때문에).


0

올바른 방향으로 파헤칠 몇 가지 아이디어 :

Drush와 동일한 문제가 발생하면 이것이 IIS 문제인지 확실하지 않습니다. Drush는 IIS없이 명령 줄에서 PHP를 실행하는 것만이 아닙니까? IIS를 중지 (iisreset / stop) 한 다음 Drush update 명령을 실행하면이 결과를 얻을 수 있습니다.

다른 것은 (죄송합니다. Lawri의 답변에 대해 직접 의견을 말할만한 평판이 없습니다) :

"기본적으로 디렉토리를 작성하여 액세스하려고했지만 디렉토리를 작성한 핸들이 해제되지 않았습니다."

이것이 사실입니까? 원래 게시물에서 "tmp"에 폴더를 만든 것처럼 보이지만 잠금은 "httpdocs"의 기존 폴더에 있습니다.

내 생각에 php-cgi는 tmp에서 httpdocs로 복사하려고 시도하고 이유로 실패하며 잠금을 제거하지 않습니다. 따라서 실패 후 조사하면 httpdocs에 잠금이 표시되지만 실패의 초기 원인은 잠금이 아니라고 생각합니다. tmp 폴더의 권한 문제 일 수 있습니다!


이 경우 그는 또한 '손으로'이동할 수없는 경우 업그레이드 프로세스의 일부로 디렉토리가 작성됩니다. IIS는 이상한 오류를 일으키는 것으로 알려진 CGI 인터페이스를 통해 관련됩니다. 보고 된 오류는 "액세스 할 수 없음"이 아니라 "복사 할 수 없음"오류입니다.
LvB
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.