Problema IIS con Drupal - Update manager: aggiornamento fallito! Le directory sono bloccate da php-cgi.exe


9

Ho dei problemi quando utilizzo "Update manager" sulla GUI. Alcune directory vengono bloccate php-cgi.exee quindi la sostituzione delle directory originali con quelle appena scaricate (che sono più recenti) non ha esito positivo.
MA devo dire che non è un problema di autorizzazione, perché i moduli possono essere installati tramite "Installa da un URL" in poi /admin/modules/installe funzionano senza problemi.

Facciamo un esempio:

  1. Pagina di aggiornamenti disponibili ( /admin/reports/updates/update):

    Aggiornamenti disponibili

    Ora controllo il modulo Seleziona (o altro) da aggiornare ( non importa quale modulo scelgo , i risultati sono gli stessi !! quindi è solo un esempio).

  2. Ho premuto il pulsante "Scarica questi aggiornamenti" .

  3. OK, l'istanza aggiornata del modulo viene scaricata senza problemi:
    " Aggiornamenti scaricati correttamente ": Aggiornamenti scaricati correttamente
  4. Ora faccio clic su Continua .
  5. Ecco che arriva l'errore. Il risultato:
    " Aggiornamento non riuscito! Per ulteriori informazioni, consultare il registro di seguito.
    Select_or_other
    • Errore durante l'installazione / l'aggiornamento
    • File Transfer fallito, motivo: Impossibile copiare D:/Projects/web/drupal-7/tmp/update-extraction-6d8993ac/select_or_other/LICENSE.txta /Projects/web/drupal-7/htdocs/sites/all/modules/select_or_other/LICENSE.txt. " Aggiornamento non riuscito!
  6. OK, sto iniziando a provare a esaminare i possibili motivi.
    • Ecco quello che i miei sguardi Drupal struttura di directory come: Struttura della directory TC. Ho impostato ../tmpper essere la directory temporanea (in /admin/config/media/file-system), i file Drupal sono in htdocs. Questo è corretto, poiché posso installare i moduli tramite la GUI, come ho detto sopra.
    • Quando provo ad accedere alla htdocs/sites/all/modules/select_or_otherdirectory, non posso, perché viene visualizzato il messaggio "Accesso negato al file ......sites/all/modules/select_or_other!" quando si apre in Total Commander, e " ...sites/all/modules/select_or_othernon è accessibile Accesso negato." durante l'apertura in Esplora risorse: cercando di aprire la directory in Total Commander,cercando di aprire la directory in Esplora risorse
    • OK, faccio clic con il pulsante destro del mouse sulla cartella e apro Unlocker tramite il suo assistente nel menu di scelta rapida. Dice che questa directory è bloccata da php-cgi.exe: Unlocker - directory bloccata da php-cgi.exe faccio clic su "Sblocca tutto" e ora la cartella può essere cancellata da sola (poiché non è più bloccata da php-cgi.exe), quindi semplicemente
    • Posso trovare la directory aggiornata del modulo select_or_other in tmp: directory del modulo aggiornata in <code> tmp </code>
    • quindi devo spostarlo manualmente nella sites/all/modulesdirectory.

Quali possono essere i possibili motivi del blocco della directory da php-cgi.exe? (Forse Windows Cache Extension 1.1 per PHP 5.3 installato tramite Web Platform Installer? Ma se sì, perché ad esempio la cancellazione di immagini o simili tramite la GUI funziona correttamente?)
Cosa posso fare per evitare questo problema e lasciare che "Aggiorna manager "lavoro?


Sto vedendo esattamente lo stesso comportamento con Drupal 7.15 su IIS7 / 2008R2. Sarebbe bello risolvere questo problema.
Nic

@Nic: sono d'accordo! :)
Sk8erPeter,

L'ho visto a intermittenza. Per curiosità sblocca anche il tuo pool di app?
Brent,

2
So che è fuori tema, ma devo dirlo: scappare da Drupal su IIS. Come posso vedere dagli screenshot, potresti usarlo per lo sviluppo locale. Dai un'occhiata a WAMP o Acquia Dev Desktop . Se devi semplicemente usarlo su un server di produzione, ignora il mio commento :) Devo usare IIS per alcuni siti e finora non è stata una bella esperienza.
Aram Boyajyan l'

@Brent: non lo so. Dopo aver eseguito una pagina in Drupal, i file e le directory sembrano bloccati per un periodo sconosciuto. A proposito, sto usando anche Drush , e quando voglio aggiornare un modulo usando drush up -y, ho lo stesso problema: devo sbloccare questi file e directory con Unlocker per farlo funzionare, altrimenti ricevo il messaggio di errore che questi le directory non possono essere scritte / rimosse e il processo di aggiornamento viene interrotto. Se uso Unlocker PRIMA di eseguire questo processo, l'aggiornamento ha esito positivo.
Sk8erPeter,

Risposte:


1

questo non è sicuro che consente di scrivere file dall'interfaccia utente di Drupal per l'aggiornamento dei moduli, invece di usare ftp.

ma se lo desideri, vai al pannello di hosting di plesk, esplora la directory httpdocs, fai clic con il pulsante destro del mouse e quindi su autorizzazione, ora in autorizzazione concedi l'autorizzazione in scrittura all'utente del pool di applicazioni,

Grazie


0

Il motivo per cui php-cgi ha il Lock è dovuto al modo "peculiare" di Windows di gestire l'accesso ai file e php / iis gestisce il "caching". Fondamentalmente hai appena creato la directory e hai provato ad accedervi, ma l'handle che l'ha creata non è stato rilasciato (quindi era ancora bloccato). Questo non è un problema drupal, è un problema IIS / PHP E non c'è soluzione alternativa che potrei trovare.

Fondamentalmente, consigliare la base di non usare IIS è il migliore, ho visto questo problema in più di un semplice drupal con IIS che ho risolto passando ad HTTPD apache (su win32). Intendiamoci che era per tornare a scuola, con un progetto in cui mi era richiesto di usare Windows 2000.

il modo migliore che conosco di eseguire drupal su Windows è tramite Apache (a causa della gestione interna di PHP).


0

Alcune idee per scavare nella giusta direzione:

Se hai lo stesso problema con Drush, non sono sicuro che si tratti di un problema IIS. Drush non sta semplicemente eseguendo PHP dalla riga di comando senza IIS? Puoi provarlo arrestando IIS (iisreset / stop) e quindi eseguendo il comando di aggiornamento Drush e mi aspetto che tu ottenga lo stesso risultato.

L'altra cosa (scusate, non ho abbastanza reputazione per commentare direttamente la risposta di Lawri):

"Fondamentalmente hai appena creato la directory e hai provato ad accedervi, ma l'handle che l'ha creata non è stato rilasciato"

È davvero vero? Dal post originale sembra che abbia creato la cartella in "tmp", ma il blocco si trova sulla cartella già esistente in "httpdocs".

La mia ipotesi è che php-cgi tenta di copiare da tmp a httpdocs, non riesce per un motivo e non rimuove il blocco. Quindi, quando indaghi dopo l'errore, vedi un blocco su httpdocs, ma penso che il motivo iniziale del fallimento non sia un blocco, dopo tutto potrebbe essere un problema di autorizzazione sulla cartella tmp!


in tal caso, anche se non poteva spostarlo "a mano", la directory viene creata come parte del processo di aggiornamento. IIS è coinvolto attraverso la sua interfaccia CGI, nota per aver causato strani errori. e l'errore segnalato non è l'errore "impossibile accedere" ma "impossibile copiare".
LvB,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.