Configurazione della directory temporanea


48

Di recente ho spostato un sito da un localhost a un VPS. Sono riuscito a rendere scrivibili i file pubblici e privati; tuttavia, non sono sicuro dove trovare la cartella temporanea e come modificare le autorizzazioni. Continuo a ricevere questo messaggio:

Il file specificato temporaneo: // file3Hl91E non può essere copiato, perché la directory di destinazione non è configurata correttamente. Ciò può essere causato da un problema con le autorizzazioni di file o directory. Ulteriori informazioni sono disponibili nel registro di sistema.

Sto usando Virtualmin, Drupal 7 e un server Debian. La mia directory temporanea attuale è /tmp.

Risposte:


46

Controlla Amministratore -> Configurazione -> Media -> File system per personalizzare il tuo percorso tmp. Assicurati di usare percorsi relativi e di avere i giusti privilegi per l'utente Apache.

Personalmente mi piace il caricamento di questo file con correzione di articoli . Ha buone osservazioni. Ha funzionato per me.

Di recente, ho scaricato il mio sito sul mio computer Mac. Succede che sul mio Mac stavo usando mod_userdirper Apache e ho dimenticato che /etc/apache2/users/nameofuser.confdevo impostare AllowOverride All, altrimenti avrò il seguente messaggio:

Il file temporaneo specificato non può essere copiato perché la directory di destinazione non è configurata correttamente.


Il link incluso è inattivo
pal4life

il link è tornato !! l'autore ha gentilmente rimesso il sito!
Cayerdis,

2
Sarebbe bene aggiungere una sintesi di queste "osservazioni" nella risposta.
finanza fifi,

4
Il link è di nuovo inattivo.
Kari Kääriäinen,


17

Nelle tue impostazioni.php

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

Questo funzionerà su sistemi unix il 99% delle volte.

Di solito la directory / tmp esiste su sistemi UNIX con permessi aperti, esiste specificamente per file temporanei ed è spesso impostata per migliorare le prestazioni.

È possibile verificare le autorizzazioni eseguendo ls -al /tmpdalla riga di comando.

Se sei interessato a leggere ulteriormente su questo, vedi https://en.wikipedia.org/wiki/Temporary_folder


1
Questa non è davvero una buona risposta secondo me. Non ci sono spiegazioni e probabilmente non funzionerà se /tmpnon ha le autorizzazioni giuste. È persino in contraddizione con la risposta accettata (che non è eccezionale da sola).
finanza fifi

Non credo che la risposta richieda molte spiegazioni, direi che il funzionamento della variabile $ conf in settings.php è una conoscenza generale per gli sviluppatori di Drupal. Una delle cose belle di questa risposta è che è concisa. Non sono sicuro che contraddica la risposta accettata, la risposta accettata funzionerà e questa è un'alternativa. La differenza tra questo metodo e farlo attraverso l'interfaccia utente è che funzionerà su più ambienti, ma dovresti impostarlo individualmente nell'interfaccia utente per ciascun ambiente.
chim

16

È importante capire che può esistere un problema di autorizzazioni SIA nella directory temporanea specificata (definita in admin / config / media / file-system) sia nella cartella in cui verrà copiato il file temporaneo. Ho visto questo errore alcune volte e di solito non è un problema con la cartella temporanea, ma l'ultima cartella in cui quel file viene copiato dopo aver vissuto nella cartella temporanea.

Assicurarsi inoltre che il percorso del file system pubblico sia impostato correttamente.


1
Questo è stato il caso per me. Nel mio caso, dovevo impostare la proprietà della directory / siti / default / files appena creata su USERNAME: apache (su alcuni sistemi quel gruppo non si chiamerebbe nessuno).
Evan Donovan,

8

Ho avuto questo esatto problema e mi sono assicurato di usare il percorso relativo (siti / default / file / tmp) per la posizione della mia cartella tmp come suggerito e ho anche cambiato i permessi sulla cartella tmp per assicurarmi che fosse scrivibile da apache ma il mio problema persisteva . così ho deciso di controllare i messaggi di registro (Rapporti >> Messaggi di registro recenti) per vedere se potevo capire meglio quale fosse il problema. In questo modo ho ricevuto un messaggio più specifico:

Non è stato possibile impostare le autorizzazioni del file su public: // js.

Questo mi ha spinto a controllare le autorizzazioni sulla cartella js in siti / default / file e, a quanto pare, apache non ha potuto scrivergli, quindi cambiando le autorizzazioni a 775 su quella cartella mi sono sbarazzato del mio messaggio di errore. Quindi suggerirei di controllare le autorizzazioni per tutte le sottocartelle in siti / default / file e non solo per la cartella tmp se non hai ancora risolto il tuo problema. Ho pensato di condividere queste informazioni.


Il mio problema era lo stesso di questo, ma io uso il seguente per correggerlo: sudo chgrp -R www-data / var / www / mysite
Wavesailor

Supponendo che stai combinando sudo chgrp -R www-data /var/www/mysitecon "la modifica delle autorizzazioni su 775" . Questo NON è necessario. Drupal non ha bisogno di scrivere in ogni cartella. Solo le tue cartelle di file pubbliche, private e tmp.
rovr138,

Sì, la cosa cruciale qui, che non viene menzionata alcuna altra risposta, è trovare la directory di destinazione (in genere da qualche parte in siti / default / files - / css e / js sono i candidati principali se hai attivato la concatenazione JS / CSS) e puoi ottenerlo solo visualizzando il registro.
William Turrell,

... * comunque * - l'etichetta sul modulo di amministrazione dice "Questa directory non dovrebbe essere accessibile sul web.", Quindi a meno che tu non abbia preso provvedimenti per proteggere / sites / default / files / tmp in Apache o Nginx, quindi mettendola c'è una cattiva idea.
William Turrell,

5

puoi trovare le impostazioni del file system admin/config/media/file-system modificandolo in / tmp

inoltre è possibile controllare admin / reports / status per eventuali problemi di impostazione

circa il permesso / tmp puoi dargli 755 e lo troverai in / public_html


2

Il messaggio di errore può a volte essere fuorviante

Se dice che il problema ha a che fare con la directory di destinazione, l'apache probabilmente non ha i permessi per scrivere nella sottocartella siti / default / files che Drupal vuole che inserisca il file.

Una buona soluzione è rendere l'utente apache il proprietario di tutti i file e le directory in siti / default / file

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

O qualcosa di simile dovrebbe risolvere i problemi della directory di destinazione. Verifica che il proprietario disponga delle autorizzazioni di scrittura ed esecuzione su tutte le sottodirectory.


1
Questa soluzione mi ha salvato la giornata, sto lavorando su Ubuntu 14.014 e l'ho fattochown -R www-data:www-data /var/www/html/sites/default/files/
Rishi Kulshreshtha,

2

La directory dei file: risoluzione dei problemi dei server Web basati su Apache

Se i file di directory non sono "di proprietà" del server Web, è possibile procedere in due modi. Queste istruzioni presuppongono che si disponga dell'accesso shell al server Web. Se non si dispone dell'accesso alla shell, contattare il provider di hosting per ulteriore supporto.

Idealmente, sarà possibile modificare il "proprietario" dei file di directory in modo che corrisponda al nome del server Web. Su un server Unix o Linux è possibile verificare "chi" è in esecuzione il server Web emettendo i seguenti comandi:

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

A seconda del tuo server Web, uno di questi comandi restituirà una serie di righe come questa:

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

La prima colonna nel testo restituito è l '"utente" su cui opera il tuo server Web. In questo caso l'utente è www-data. Per rendere la directory dei file scrivibile dal server Web, è necessario riassegnarne la proprietà utilizzando il comando seguente:

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

Se non si dispone di autorizzazioni sufficienti sul server per modificare la proprietà della cartella, l'opzione migliore successiva è fornire l'accesso in scrittura di gruppo alla cartella con il seguente comando:

$ chmod -R 0770 sites/default/files

Dovresti anche essere in grado di regolare le autorizzazioni della directory utilizzando un programma FTP come indicato sopra.

Una volta completati questi passaggi, confermare che sono state assegnate le autorizzazioni appropriate andando su Amministra -> Rapporti -> Rapporto sullo stato. Scorri fino alla sezione "File system" e conferma che le tue impostazioni sono ora corrette.

Fonte: la directory dei file


1

Un'altra fonte di errore è che non è possibile scrivere nella cartella dei file. Nel mio caso l'ho risolto usando:

$chmod 777 sites/default/files/pictures/

15
woah, davvero? 777 su cos'è chiaramente un sito di produzione? Questo è solo un consiglio irresponsabile.
David Meister,

Sì, dagli almeno 755.
user1359

@DavidMeister Ti ho votato, ma purtroppo su hosting condiviso (vomito) a volte 777 è l'unico modo in cui Apache può scrivere in una cartella

@andrewtweber ne sei sicuro ? Anche in un ambiente di hosting condiviso, 775 dovrebbe essere meno allentato di cui hai bisogno. Potresti fornire un esempio di un provider di hosting condiviso che richiede 777? Se usi 777 su un server condiviso e non hai un VPS, tutti gli altri sul server possono accedere ai tuoi file.
David Meister,

3
@andrewtweber anche sì, la lezione non è che "hosting condiviso" richiede 777 ma che "hosting spaventoso" richiede 777.
David Meister,

1

In alcune situazioni questo può essere facilmente risolto eliminando le cartelle 'ctools' e 'js' in default / files. Queste cartelle vengono ricreate dal sistema, se necessario. A volte, quando si esegue una nuova installazione di un sito esistente, queste cartelle esistenti già causano problemi. Inoltre, se il tuo CSS non funziona dopo aver effettuato una nuova installazione di un sito esistente, questo può anche essere risolto eliminando questi file e consentendo a Drupal di ricrearli.


0

La mia vecchia e problematica configurazione

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

La mia configurazione nuova e funzionante

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

Sì, è necessario eseguire su cartelle per poterle utilizzare. 775 sarebbe probabilmente più appropriato di 774. Nel tuo caso con l'impostazione della tua proprietà 755 sarebbe anche una buona opzione.
rooby

0

Le autorizzazioni corrette per la cartella temporanea dipendono dalla configurazione del server Web.

Se si esegue Drupal con PHP come modulo del server Web, ad esempio Apache, quando l'utente che è definito nel file di configurazione del server Web principale utilizzando la direttiva Utente deve avere accesso in scrittura ad esso.

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

Apache utente


0

Ho avuto lo stesso problema dopo essermi spostato da un server a un altro.

Ho provato tutto ciò che è stato suggerito qui, impostando le cartelle su 755 e così via.

La mia cartella temporanea è stata impostata su "" tmp7zXhVVCO "e in realtà ha copiato correttamente i file di installazione, dopo ogni tentativo ho visto che il file temporaneo veniva copiato lì, ma l'installazione continuava a fallire.

Il problema però è che il proprietario non ha i diritti, motivo per cui 777 rimuove questo errore, ma sappiamo tutti che questo non è un modo per andare sui siti di produzione.

Quello che dovresti fare è cambiare la tua cartella temporanea in qualsiasi altra cosa, come "temp" o qualunque cosa ti piaccia, finché non esiste ancora , drupal creerà questa nuova cartella con diritti apache , non diritti utente e il tuo problema sarà risolto.


Quando lo faccio, ricevo l'erroreThe directory ../temp2 does not exist and could not be created.
Paul Trotter,

0

Non mi piace davvero nessuna delle risposte esistenti, quindi ne avrò una anch'io che probabilmente aggiornerò nel tempo. Principalmente con comandi di shell.

Per ora, esegui questo da 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

0

Da Configurazione -> Media -> File system Ho rimosso il catalogo / temp. Dopodiché non ho avuto problemi.


0

Ho avuto lo stesso problema su una migrazione. Ho chmod 777 tutti i siti / default / file ma l'errore si verifica ancora. Cambio autorizzazione 775 su siti / default / file e il messaggio è scomparso. Non ero un problema di percorso privato, il mio è / var / tmp ma l'autorizzazione 775.


0

Se riscontri questo problema utilizzando Pantheon e continui a ricevere l'errore dopo aver impostato i percorsi della directory dei file (temp), potresti anche dover cambiare la modalità di connessione sul cruscotto dell'istanza di sviluppo da Git a SFTP.

Il tuo sito Drupal potrebbe tentare di salvare i file in una directory gestita da Git (ad esempio se stai modificando le impostazioni di layout e simili in un tema Temi adattivi). Per fare ciò, passa a SFTP. Una volta che i file sono stati salvati, puoi tornare a Git e la dashboard ti chiederà di confermare le modifiche apportate sul server.


0

Ho avuto lo stesso problema.

Stavo usando IIS in Windows. Infine, il problema riguardava le autorizzazioni nei siti cartella / default / file e, ovviamente, in siti / default / file / tmp.

Alla fine ho dato nuovamente "Autorizzazioni complete" alle cartelle e ha funzionato.

Saluti

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.