Temporäres Verzeichnis konfigurieren

48

Ich habe kürzlich eine Site von einem lokalen Host auf einen VPS verschoben. Ich habe es geschafft, die öffentlichen und privaten Dateien beschreibbar zu machen. Ich bin mir jedoch nicht sicher, wo sich der temporäre Ordner befindet und wie ich die Berechtigungen ändere. Ich bekomme immer diese Nachricht:

Die angegebene Datei temporary: // file3Hl91E konnte nicht kopiert werden, da das Zielverzeichnis nicht richtig konfiguriert ist. Dies kann durch ein Problem mit Datei- oder Verzeichnisberechtigungen verursacht werden. Weitere Informationen finden Sie im Systemprotokoll.

Ich benutze Virtualmin, Drupal 7 und einen Debian-Server. Mein aktuelles temporäres Verzeichnis ist /tmp.

Jasmine Ahmed
quelle

Antworten:

46

Überprüfen Sie Administrator -> Konfiguration -> Medien -> Dateisystem, um Ihren tmp-Pfad zu personalisieren. Stellen Sie sicher, dass Sie relative Pfade verwenden und die richtigen Berechtigungen für den Apache-Benutzer haben.

Ich persönlich mag diesen Artikel zum Hochladen von Fixdateien . Er hat gute Beobachtungen. Es hat bei mir funktioniert.

Kürzlich habe ich meine Website auf meinen Mac heruntergeladen. Es kommt vor, dass ich in meinem Mac, den ich mod_userdirfür Apache verwendet habe, vergessen habe, dass /etc/apache2/users/nameofuser.confich die Einstellungen vornehmen muss AllowOverride All. Andernfalls erhalte ich die folgende Meldung:

Die angegebene temporäre Datei konnte nicht kopiert werden, da das Zielverzeichnis nicht richtig konfiguriert ist.

Cayerdis
quelle
Link enthalten ist down
pal4life
link ist wieder da !! Der Autor hat die Seite freundlicherweise zurückgesetzt!
Cayerdis
2
Es wäre gut, der Antwort eine Zusammenfassung dieser "Beobachtungen" hinzuzufügen.
Fifi Finance
4
Der Link ist wieder ausgefallen.
Kari Kääriäinen
17

In deiner settings.php

$conf['file_temporary_path'] = '/tmp';

Dies funktioniert auf Unix-Systemen in 99% der Fälle.

In der Regel ist das Verzeichnis / tmp auf UNIX-Systemen mit offenen Berechtigungen vorhanden. Es ist speziell für temporäre Dateien vorhanden und wird häufig zur Verbesserung der Leistung eingerichtet.

Sie können Berechtigungen überprüfen, indem Sie in ls -al /tmpder Befehlszeile ausführen.

Wenn Sie diesbezüglich weiterlesen möchten, lesen Sie https://en.wikipedia.org/wiki/Temporary_folder

chim
quelle
1
Dies ist meiner Meinung nach keine wirklich gute Antwort. Es gibt keine Erklärung und es funktioniert wahrscheinlich nicht, wenn /tmpnicht die richtigen Berechtigungen vorhanden sind. Es widerspricht sogar der akzeptierten Antwort (die für sich genommen auch nicht großartig ist).
Fifi Finance
Ich glaube nicht, dass die Antwort viel Erklärung erfordert. Ich würde sagen, dass die Funktionsweise der Variablen $ conf in settings.php allgemeines Wissen für Drupal-Entwickler ist. Das Schöne an dieser Antwort ist, dass sie kurz ist. Ich bin nicht sicher, ob dies der akzeptierten Antwort widerspricht, die akzeptierte Antwort wird funktionieren und dies ist eine Alternative. Der Unterschied zwischen dieser Methode und der Ausführung über die Benutzeroberfläche besteht darin, dass dies in mehreren Umgebungen funktioniert. Sie müssten sie jedoch für jede Umgebung einzeln in der Benutzeroberfläche festlegen.
chim
16

Es ist wichtig zu verstehen, dass ein Berechtigungsproblem sowohl in Ihrem angegebenen temporären Verzeichnis (das unter admin / config / media / file-system definiert ist) als auch in dem Ordner bestehen kann, in den diese temporäre Datei kopiert werden soll. Ich habe diesen Fehler einige Male gesehen und es ist normalerweise kein Problem mit dem temporären Ordner, sondern dem endgültigen Ordner, in den diese Datei kopiert wird, nachdem sie im temporären Ordner gespeichert wurde .

Stellen Sie außerdem sicher, dass der Pfad des öffentlichen Dateisystems korrekt festgelegt ist.

Sheldonkreger
quelle
1
Das war bei mir der Fall. In meinem Fall musste ich den Besitz des neu erstellten Verzeichnisses / sites / default / files auf USERNAME: apache setzen (auf einigen Systemen würde diese Gruppe nobody heißen).
Evan Donovan
8

Ich hatte genau dieses Problem und stellte sicher, dass der relative Pfad (sites / default / files / tmp) für den Speicherort meines tmp-Ordners wie vorgeschlagen verwendet wurde. Außerdem habe ich die Berechtigungen für den tmp-Ordner geändert, um sicherzustellen, dass er von Apache beschreibbar ist, aber mein Problem bestand weiterhin . Deshalb habe ich mich entschlossen, die Protokollnachrichten (Berichte >> Letzte Protokollnachrichten) zu überprüfen, um festzustellen, ob ich ein besseres Verständnis für das Problem habe. Auf diese Weise erhielt ich eine spezifischere Nachricht:

Die Dateiberechtigungen konnten nicht für public: // js festgelegt werden.

Dies veranlasste mich, die Berechtigungen für den Ordner js in sites / default / files zu überprüfen, und wie sich herausstellte, konnte Apache nicht darauf schreiben. Durch Ändern der Berechtigungen für diesen Ordner auf 775 wurde meine Fehlermeldung entfernt. Daher würde ich vorschlagen, dass Sie die Berechtigungen für alle Unterordner in sites / default / files und nicht nur für den tmp-Ordner überprüfen, wenn Sie Ihr Problem noch nicht gelöst haben. Ich dachte nur, ich würde diese Informationen teilen.

Andew
quelle
Mein Problem war dasselbe, aber ich benutze das Folgende, um es zu korrigieren: sudo chgrp -R www-data / var / www / mysite
Wavesailor
Angenommen, Sie kombinieren sudo chgrp -R www-data /var/www/mysitemit "Ändern der Berechtigungen auf 775" . Dies wird NICHT benötigt. Drupal muss nicht in jeden Ordner schreiben . Nur Ihre öffentlichen, privaten und tmp-Dateiordner.
Rovr138
Ja - die entscheidende Sache hier, dass keine andere Antwort erwähnt wird, ist die Suche nach Zielverzeichnis ( in der Regel irgendwo unter sites / default / files - / css und / js sind erstklassige Kandidaten , wenn Sie JS / CSS Verkettung eingeschaltet haben) und Sie können erhalten Sie das nur, indem Sie das Protokoll anzeigen.
William Turrell
… * Jedoch * - Auf dem Etikett des Administrationsformulars steht "Dieses Verzeichnis sollte nicht über das Internet erreichbar sein." Es gibt eine schlechte Idee.
William Turrell
5

Sie finden die Dateisystemeinstellungen in admin/config/media/file-system change it to / tmp

Sie können auch admin / reports / status auf Einstellungsprobleme überprüfen

Über / tmp Erlaubnis können Sie es 755 geben und Sie finden es in / public_html

Ahmed
quelle
2

Die Fehlermeldung kann manchmal irreführend sein

Wenn das Problem mit dem Zielverzeichnis zusammenhängt, hat der Apache wahrscheinlich nicht die Berechtigung, in den Unterordner sites / default / files zu schreiben, in dem Drupal die Datei ablegen möchte.

Eine gute Lösung ist, den Apache-Benutzer zum Eigentümer aller Dateien und Verzeichnisse unter sites / default / files zu machen

cd /path/to/sites/default
sudo chown -R _www:_www files

Oder ähnliches sollte Probleme mit dem Zielverzeichnis beheben. Stellen Sie sicher, dass der Eigentümer über Schreib- und Ausführungsberechtigungen für alle Unterverzeichnisse verfügt.

chim
quelle
1
Diese Lösung hat mir den Tag gerettet, ich arbeite an Ubuntu 14.014 und habe dies getanchown -R www-data:www-data /var/www/html/sites/default/files/
Rishi Kulshreshtha
2

Das Dateiverzeichnis: Fehlerbehebung bei Apache-basierten Webservern

Wenn sich die Verzeichnisdateien nicht im Besitz des Webservers befinden, gibt es zwei Möglichkeiten, um fortzufahren. In diesen Anweisungen wird davon ausgegangen, dass Sie über Shell-Zugriff auf den Webserver verfügen. Wenn Sie keinen Shell-Zugriff haben, wenden Sie sich an Ihren Hosting-Anbieter, um weitere Unterstützung zu erhalten.

Im Idealfall können Sie den "Eigentümer" der Verzeichnisdateien so ändern, dass er dem Namen des Webservers entspricht. Auf einem Unix- oder Linux-basierten Server können Sie überprüfen, "wen" der Webserver ausführt, indem Sie die folgenden Befehle eingeben:

$ ps aux  |grep apache # for Apache 2.x
$ ps aux  |grep httpd # for Apache 1.x

Abhängig von Ihrem Webserver gibt einer dieser Befehle eine Reihe von Zeilen wie folgt zurück:

www-data 13612  0.1  0.9  50640 20340 ? S 12:29   0:08 /usr/sbin/apache2 -k start

Die erste Spalte im zurückgegebenen Text ist der "Benutzer", unter dem Ihr Webserver ausgeführt wird. In diesem Fall handelt es sich bei dem Benutzer um WWW-Daten. Um Ihr Dateiverzeichnis für den Webserver beschreibbar zu machen, müssen Sie seinen Besitz mit dem folgenden Befehl neu zuweisen:

$ chown -R www-data sites/default/files
$ chmod -R 0700 sites/default/files

Wenn Sie nicht über ausreichende Berechtigungen auf Ihrem Server verfügen, um den Eigentümer des Ordners zu ändern, können Sie mit dem folgenden Befehl Gruppenschreibzugriff auf den Ordner gewähren:

$ chmod -R 0770 sites/default/files

Sie sollten auch in der Lage sein, die Berechtigungen des Verzeichnisses mit einem FTP-Programm wie oben beschrieben anzupassen.

Nachdem Sie diese Schritte ausgeführt haben, bestätigen Sie, dass die entsprechenden Berechtigungen zugewiesen wurden, indem Sie zu Verwalten -> Berichte -> Statusbericht navigieren. Scrollen Sie zum Abschnitt "Dateisystem" und bestätigen Sie, dass Ihre Einstellungen jetzt korrekt sind.

Quelle: Das Dateiverzeichnis

Sukhjinder Singh
quelle
1

Eine weitere Fehlerquelle ist, dass in den Ordner files nicht geschrieben werden kann. In meinem Fall habe ich es gelöst mit:

$chmod 777 sites/default/files/pictures/
Freeman
quelle
15
woah, wirklich? 777 auf was ist klar ein Produktionsstandort? Das ist nur ein verantwortungsloser Rat.
David Meister
Ja, geben Sie es mindestens 755.
user1359
@DavidMeister Ich habe dich beleidigt, aber leider auf Shared Hosting (Erbrechen) manchmal 777 ist die einzige Möglichkeit, wie Apache in einen Ordner schreiben kann
@andrewtweber bist du dir da sicher ? Selbst in einer Shared-Hosting-Umgebung sollte 775 so locker sein, wie Sie es brauchen. Könnten Sie bitte ein Beispiel für einen Shared Hosting-Anbieter nennen, für den 777 erforderlich ist? Wenn Sie 777 auf einem gemeinsam genutzten Server verwenden und keinen VPS haben, können alle anderen Benutzer auf Ihre Dateien zugreifen.
David Meister
3
@andrewtweber auch ja, die Lektion ist nicht, dass "Shared Hosting" 777 erfordert, aber das "entsetzliche Hosting" 777 erfordert.
David Meister
1

In einigen Situationen kann dies leicht behoben werden, indem die Ordner 'ctools' und 'js' in default / files gelöscht werden. Diese Ordner werden vom System bei Bedarf neu erstellt. Wenn Sie eine vorhandene Site neu installieren, können diese Ordner bereits Probleme verursachen. Wenn Ihr CSS nach der Neuinstallation einer vorhandenen Site nicht funktioniert, können Sie dies auch beheben, indem Sie diese Dateien löschen und von Drupal neu erstellen lassen.

Paul Trotter
quelle
0

Meine alte und problematische Konfiguration

chmod 664 -R /var/drupal-bc/sites/default/files
chmod 664 -R /var/drupal-bc/sites/default/private

drw-rw-r-- 2 www-data www-data  4096 Jul 31 12:35 files
drw-rw-r-- 3 www-data www-data  4096 Jul  5 15:08 private

Meine neue und funktionierende Konfiguration

chmod 774 -R /var/drupal-bc/sites/default/files
chmod 774 -R /var/drupal-bc/sites/default/private

drwxrwxr-- 2 www-data www-data  4096 Jul 31 12:35 files
drwxrwxr-- 3 www-data www-data  4096 Jul  5 15:08 private
Claudio Lente
quelle
Ja, für Ordner ist die Ausführung erforderlich, um sie verwenden zu können. 775 wäre wahrscheinlich angemessener als 774. In Ihrem Fall mit der Art und Weise, wie Ihr Besitz festgelegt ist, wäre 755 auch eine gute Option.
Rooby
0

Die richtigen Berechtigungen für den temporären Ordner hängen von Ihrer Webserverkonfiguration ab.

Wenn Sie Drupal mit PHP als Modul des Webservers ausführen, beispielsweise Apache, sollte der Benutzer, der in der Konfigurationsdatei des Hauptservers mit der Anweisung User definiert ist, Schreibzugriff darauf haben.

% grep -i "user" /etc/httpd/conf/httpd.conf

Benutzer Apache

Taras
quelle
0

Ich hatte das gleiche Problem, nachdem ich von einem Server auf einen anderen umgezogen bin.

Ich habe alles Mögliche ausprobiert, Ordner auf 755 gesetzt und so weiter.

Mein temporärer Ordner wurde auf "" tmp7zXhVVCO "gesetzt und kopierte die Installationsdateien wirklich gut, nach jedem erneuten Versuch sah ich, dass die temporäre Datei dort kopiert wurde, aber die Installation schlug weiterhin fehl.

Das Problem ist jedoch, dass der Eigentümer nicht die Rechte besitzt, weshalb 777 diesen Fehler beseitigt, aber wir alle wissen, dass dies kein Weg ist, auf Produktionsstandorten voranzukommen.

Was Sie tun sollten, ist, Ihren temporären Ordner auf irgendetwas anderes zu ändern, wie "temp" oder was auch immer zu Ihnen passt. Solange es noch nicht existiert , erstellt Drupal diesen neuen Ordner mit Apache- Rechten, nicht mit Benutzerrechten und Ihrem Problem Wird geklärt werden.

Kevin G
quelle
Wenn ich das tue, erhalte ich den FehlerThe directory ../temp2 does not exist and could not be created.
Paul Trotter
0

Ich mag keine der vorhandenen Antworten wirklich, deshalb beginne ich selbst eine, die ich wahrscheinlich im Laufe der Zeit aktualisieren werde. Hauptsächlich mit Shell-Befehlen.

Führen Sie dies vorerst aus sites/example.com:

MYSITE=example.com
FILES=sites/$MYSITE/files  
# CSS and JS might also cause trouble and advagg has its own dirs
TMPDIRS=$FILES/tmp $FILES/js $FILES/css $FILES/advagg_*
drush vset file_temporary_path $FILES/tmp # seems better than using /tmp
drush vset file_directory_temp $FILES/tmp
cd $(drush drupal-directory)   
chown www-data -R $TMPDIRS
chmod 755 -R $TMPDIRS
fifi finanzen
quelle
0

Unter Konfiguration -> Medien -> Dateisystem habe ich den / temp-Katalog entfernt. Danach hatte ich keine Probleme mehr.

Filip
quelle
0

Ich hatte das gleiche Problem bei einer Migration. Ich habe chmod 777 alle Sites / Standard / Dateien, aber der Fehler tritt immer noch auf. Ich ändere die Berechtigung 775 auf Sites / default / files und die Nachricht ist verschwunden. Ich war kein privates Pfadproblem, mein ist / var / tmp, aber die 775-Erlaubnis.

Holz
quelle
0

Wenn Sie mit Pantheon auf dieses Problem stoßen und die Fehlermeldung weiterhin erhalten, nachdem Sie die (temporären) Dateiverzeichnispfade festgelegt haben, müssen Sie möglicherweise auch den Verbindungsmodus auf Ihrem Entwicklungsinstanz-Dashboard von Git auf SFTP umschalten.

Ihre Drupal-Site versucht möglicherweise, Dateien in einem von Git verwalteten Verzeichnis zu speichern (z. B. wenn Sie Layouteinstellungen und Ähnliches in einem Design für adaptive Themen ändern). Wechseln Sie dazu zu SFTP. Sobald die Dateien gespeichert wurden, können Sie wieder zu Git wechseln. Das Dashboard fordert Sie auf, die auf dem Server vorgenommenen Änderungen zu bestätigen.

Kay V
quelle
0

Ich hatte das gleiche problem

Ich habe IIS unter Windows verwendet. Schließlich bestand das Problem bei den Berechtigungen in den Ordnern sites / default / files und offensichtlich in sites / default / files / tmp.

Endlich habe ich den Ordnern wieder "Vollzugriff" gegeben und es hat funktioniert.

Grüße

jorge_vicente
quelle