Ich habe ein Problem bei der Verwendung des "Update Managers" auf der GUI. Einige Verzeichnisse werden von gesperrt php-cgi.exe
, und daher ist das Ersetzen der ursprünglichen Verzeichnisse durch die neu heruntergeladenen (neueren) Verzeichnisse nicht erfolgreich.
Aber ich habe zu erwähnen , dass es nicht ein Berechtigungsproblem, da die Module über get installiert können „Software von einer URL“ auf /admin/modules/install
, und die Arbeit ohne ein Problem.
Nehmen wir ein Beispiel:
Seite für verfügbare Updates (
/admin/reports/updates/update
):Jetzt überprüfe ich das Select (oder ein anderes) Modul, das aktualisiert werden soll ( es spielt keine Rolle, welches Modul ich wähle , die Ergebnisse sind die gleichen !! es ist also nur ein Beispiel).
Ich klicke auf "Diese Updates herunterladen" .
- OK, die aktualisierte Instanz des Moduls wird problemlos heruntergeladen :
" Updates erfolgreich heruntergeladen ": - Jetzt klicke ich auf Weiter .
- Hier kommt der Fehler. Das Ergebnis:
" Update fehlgeschlagen! Weitere Informationen finden Sie im Protokoll unten.
Select_or_other- Fehler beim Installieren / Aktualisieren
- File Transfer fehlgeschlagen, Grund: Kann kopiert nicht
D:/Projects/web/drupal-7/tmp/update-extraction-6d8993ac/select_or_other/LICENSE.txt
zu/Projects/web/drupal-7/htdocs/sites/all/modules/select_or_other/LICENSE.txt
. ""
- OK, ich fange an zu versuchen, die möglichen Gründe zu untersuchen.
- So sieht meine Drupal-Verzeichnisstruktur aus : . Ich
../tmp
habe das temporäre Verzeichnis (in/admin/config/media/file-system
) festgelegt, in dem sich die Drupal-Dateien befindenhtdocs
. Dies ist richtig, da ich Module über die GUI installieren kann, wie oben erwähnt. - Wenn ich versuche, das
htdocs/sites/all/modules/select_or_other
Verzeichnis aufzurufen, kann ich das nicht, da ich die Meldung "Zugriff auf Datei verweigert......sites/all/modules/select_or_other
!" beim Öffnen in Total Commander und "...sites/all/modules/select_or_other
Zugriff nicht möglich. Zugriff verweigert" beim Öffnen in Windows Explorer : , - OK, ich klicke mit der rechten Maustaste auf den Ordner und öffne Unlocker über seinen Assistenten im Kontextmenü. Es heißt, dieses Verzeichnis ist gesperrt durch
php-cgi.exe
: Ich klicke auf "Alle entsperren", und der Ordner kann jetzt von sich selbst gelöscht werden (da er nicht mehr von gesperrt istphp-cgi.exe
), also einfach - Ich finde das aktualisierte Verzeichnis des select_or_other-Moduls in
tmp
: - also muss ich es manuell in das verzeichnis verschieben
sites/all/modules
.
- So sieht meine Drupal-Verzeichnisstruktur aus : . Ich
Was können die möglichen Gründe für die Sperrung des Verzeichnisses sein php-cgi.exe
? (Möglicherweise wird Windows Cache Extension 1.1 für PHP 5.3 über das Web Platform Installer installiert? Wenn ja, warum funktioniert das Löschen von Bildern oder Ähnlichem über die GUI beispielsweise ordnungsgemäß?)
Was kann ich tun, um dieses Problem zu vermeiden, und lassen Sie "Aktualisieren" Manager "Arbeit?
drush up -y
das gleiche Problem auf: Ich muss diese Dateien und Verzeichnisse mit Unlocker entsperren , damit es funktioniert, andernfalls wird die Fehlermeldung angezeigt , dass dies der Fall ist Verzeichnisse können nicht geschrieben / entfernt werden und der Aktualisierungsprozess wird unterbrochen. Wenn ich Unlocker verwende, bevor dieser Prozess ausgeführt wird, ist das Update erfolgreich.Antworten:
Dies ist nicht sicher, um Dateien von der Drupal-Benutzeroberfläche zum Aktualisieren von Modulen schreiben zu können, anstatt FTP zu verwenden.
Wenn Sie jedoch möchten, gehen Sie zum plesk-Bereich des Hosting-Explorations-httpdocs-Verzeichnisses. Klicken Sie mit der rechten Maustaste und dann auf die Berechtigung. Geben Sie dem Benutzer des Anwendungspools in der Berechtigung eine Schreibberechtigung.
Vielen Dank
quelle
Der Grund für php-cgi für die Sperre liegt in der "eigentümlichen" Art und Weise, wie Windows den Dateizugriff handhabt und php / iis das "Caching" handhabt. Grundsätzlich haben Sie das Verzeichnis nur erstellt und versucht, darauf zuzugreifen, aber das Handle, mit dem es erstellt wurde, wurde nicht freigegeben (daher war es immer noch gesperrt). Dies ist kein Drupal-Problem, sondern ein IIS / PHP-Problem. Es ist keine Problemumgehung bekannt, die ich finden könnte.
Grundsätzlich ist der beste Ratschlag, IIS nicht zu verwenden, der beste. Ich habe dieses Problem nicht nur in Drupal mit IIS gesehen, das ich durch die Umstellung auf Apache HTTPD (unter Win32) gelöst habe. Wohlgemerkt, das war für die Schule, mit einem Projekt, bei dem ich Windows 2000 verwenden musste.
Der beste Weg, Drupal unter Windows auszuführen, ist Apache (wegen der internen Handhabung von PHP).
quelle
Einige Ideen, um in die richtige Richtung zu graben:
Wenn Sie das gleiche Problem von Drush haben, bin ich mir nicht sicher, ob dies ein IIS-Problem ist. Führt Drush PHP nicht nur über die Befehlszeile ohne IIS aus? Sie können dies versuchen, indem Sie IIS (iisreset / stop) stoppen und dann den Befehl Drush update ausführen. Ich würde erwarten, dass Sie das gleiche Ergebnis erzielen.
Die andere Sache (Entschuldigung, ich habe nicht genug Ruf, um Lawris Antwort direkt zu kommentieren):
Ist das wirklich wahr? Aus dem ursprünglichen Beitrag geht hervor, dass er den Ordner in "tmp" erstellt hat, aber die Sperre für den bereits vorhandenen Ordner in "httpdocs".
Ich vermute, dass php-cgi versucht, von tmp nach httpdocs zu kopieren, aus einem bestimmten Grund fehlschlägt und die Sperre nicht aufhebt. Wenn Sie also nach dem Fehler nachforschen, sehen Sie eine Sperre für httpdocs, aber ich denke, der ursprüngliche Grund für den Fehler ist keine Sperre, es könnte sich schließlich um ein Berechtigungsproblem für den tmp-Ordner handeln!
quelle