Mam problem z użyciem „Menedżera aktualizacji” w GUI. Niektóre katalogi są blokowane przez php-cgi.exe
, a tym samym zastępowanie oryginalnych katalogów nowymi pobranymi (nowszymi) nie kończy się powodzeniem.
Muszę jednak wspomnieć, że to nie jest kwestia zgody, ponieważ moduły mogą instalowane poprzez „Install z URL” na /admin/modules/install
i działać bez problemu.
Weźmy przykład:
Strona dostępnych aktualizacji (
/admin/reports/updates/update
):Teraz sprawdzam Wybierz (lub inny) moduł do aktualizacji ( nie ma znaczenia, który moduł wybiorę , wyniki są takie same !! więc to tylko przykład).
Nacisnąłem przycisk „Pobierz te aktualizacje” .
- OK, zaktualizowana instancja modułu jest pobierana bez problemu:
„ Aktualizacje pobrane pomyślnie ”: - Teraz klikam Kontynuuj .
- Nadchodzi błąd. Wynik:
„ Aktualizacja nie powiodła się. Aby uzyskać więcej informacji, zobacz dziennik poniżej.
Wybierz_lub_inne- Błąd instalacji / aktualizacji
- Przesyłanie pliku nie powiodło się, powód: Nie można skopiować
D:/Projects/web/drupal-7/tmp/update-extraction-6d8993ac/select_or_other/LICENSE.txt
do/Projects/web/drupal-7/htdocs/sites/all/modules/select_or_other/LICENSE.txt
. „
- OK, zaczynam próbować sprawdzić możliwe przyczyny.
- Oto co moje Drupal wygląda struktura katalogów jak: . Ustawiłem
../tmp
na katalog tymczasowy (/admin/config/media/file-system
wewnątrz), pliki Drupala sąhtdocs
. Jest to poprawne, ponieważ mogę instalować moduły za pomocą GUI, jak wspomniałem powyżej. - Kiedy próbuję wejść do
htdocs/sites/all/modules/select_or_other
katalogu, nie mogę, ponieważ pojawia się komunikat „Odmowa dostępu do pliku......sites/all/modules/select_or_other
!” po otwarciu w Total Commander, a „...sites/all/modules/select_or_other
nie jest dostępny Odmowa dostępu.” podczas otwierania w Eksploratorze Windows: , - OK, klikam folder prawym przyciskiem myszy i otwieram Unlocker za pośrednictwem jego asystenta w menu kontekstowym. Mówi, że ten katalog jest zablokowany przez
php-cgi.exe
: Klikam „Odblokuj wszystko”, a folder może teraz zostać usunięty (ponieważ nie jest już blokowany przezphp-cgi.exe
), więc po prostu - Zaktualizowany katalog modułu select_or_other mogę znaleźć w
tmp
: - więc muszę ręcznie przenieść go do
sites/all/modules
katalogu.
- Oto co moje Drupal wygląda struktura katalogów jak: . Ustawiłem
Jakie mogą być przyczyny blokady katalogu php-cgi.exe
? (Może Windows Cache Extension 1.1 for PHP 5.3 jest zainstalowany za pomocą Instalatora platformy internetowej? Ale jeśli tak, dlaczego na przykład usunięcie obrazów lub podobnych za pomocą GUI działa poprawnie?)
Co mogę zrobić, aby uniknąć tego problemu i pozwolić „Aktualizować praca menedżera?
drush up -y
, mam ten sam problem: muszę odblokować te pliki i katalogi za pomocą Unlockera, aby działało, w przeciwnym razie pojawia się komunikat o błędzie, że te katalogów nie można zapisać / usunąć, a proces aktualizacji zostaje przerwany. Jeśli użyję Unlockera PRZED uruchomieniem tego procesu, aktualizacja się powiedzie.Odpowiedzi:
nie jest to bezpieczne, co pozwala na zapisanie pliku z interfejsu użytkownika Drupal w celu aktualizacji modułów, zamiast tego należy użyć ftp.
ale jeśli chcesz, przejdź do panelu hostingu plesk eksploruj katalog httpdocs kliknij prawym przyciskiem myszy, a następnie na pozwolenie, teraz w uprawnieniu daj uprawnienia do zapisu użytkownikowi puli aplikacji,
Dzięki
źródło
Przyczyną posiadania blokady przez php-cgi jest „osobliwy” sposób, w jaki Windows obsługuje dostęp do plików, a php / iis obsługuje „buforowanie”. Zasadniczo właśnie utworzyłeś katalog i próbowałeś uzyskać do niego dostęp, ale uchwyt, który go utworzył, nie został zwolniony (więc nadal był zablokowany). To nie jest problem drupala, to kwestia IIS / PHP I nie ma znanego obejścia, które mogłem znaleźć.
Zasadniczo, czy podstawowa rada, że nie używam IIS jest najlepsza, widziałem ten problem w więcej niż tylko drupalu z IIS, który rozwiązałem, przechodząc na apache HTTPD (na win32). Pamiętaj, że to było z powrotem w szkole, z projektem, w którym musiałem używać systemu Windows 2000.
Najlepszym sposobem, w jaki znam uruchamianie drupala w systemie Windows, jest apache (z powodu wewnętrznej obsługi php).
źródło
Kilka pomysłów, by kopać we właściwym kierunku:
Jeśli masz ten sam problem z Drush, nie jestem pewien, czy jest to problem z IIS. Czy Drush nie tylko wykonuje PHP z wiersza poleceń bez IIS? Możesz tego spróbować, zatrzymując IIS (iisreset / stop), a następnie uruchamiając polecenie aktualizacji Drush. Spodziewam się, że uzyskasz ten sam wynik.
Druga rzecz (przepraszam, nie mam wystarczającej reputacji, aby bezpośrednio skomentować odpowiedź Lawri):
Czy to naprawdę prawda? Z oryginalnego postu wygląda na to, że utworzył folder w „tmp”, ale blokada znajduje się w już istniejącym folderze w „httpdocs”.
Domyślam się, że php-cgi próbuje skopiować z tmp na httpdocs, z jakiegoś powodu kończy się niepowodzeniem i nie usuwa blokady. Więc kiedy badasz po awarii, widzisz blokadę httpdocs, ale myślę, że początkowym powodem niepowodzenia nie jest blokada, może to jednak być problem z uprawnieniami w folderze tmp!
źródło