Configuration du répertoire temporaire

48

J'ai récemment déplacé un site d'un hôte local vers un VPS. J'ai réussi à rendre les fichiers publics et privés accessibles en écriture; Cependant, je ne sais pas où trouver le dossier temporaire ni comment modifier les autorisations. Je continue à recevoir ce message:

Le fichier spécifié temporaire: // fichier3Hl91E n'a pas pu être copié car le répertoire de destination n'est pas configuré correctement. Cela peut être dû à un problème d'autorisations de fichier ou de répertoire. Plus d'informations sont disponibles dans le journal système.

J'utilise Virtualmin, Drupal 7 et un serveur Debian. Mon répertoire temporaire actuel est /tmp.

Jasmine Ahmed
la source

Réponses:

46

Vérifiez Administrateur -> Configuration -> Média -> Système de fichiers pour personnaliser votre chemin tmp. Veillez à utiliser des chemins relatifs et à disposer des droits appropriés pour l'utilisateur Apache.

Personnellement, j'aime bien cet article télécharger le fichier de correction . Il a de bonnes observations. Cela a fonctionné pour moi.

Récemment, j'ai téléchargé mon site sur mon ordinateur Mac. Il se trouve que, sur mon Mac, j’utilisais mod_userdirApache et j’ai oublié qu’il /etc/apache2/users/nameofuser.confme fallait le configurer AllowOverride All, sinon le message suivant apparaîtra:

Le fichier temporaire spécifié n'a pas pu être copié car le répertoire de destination n'est pas configuré correctement.

Cayerdis
la source
Le lien inclus est en baisse
pal4life
le lien est de retour !! l'auteur a bien voulu remettre le site!
Cayerdis
2
Il serait bon d'ajouter une synthèse de ces "observations" dans la réponse.
fifi finance
4
Link est à nouveau en panne.
Kari Kääriäinen
17

Dans votre settings.php

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

Cela fonctionnera sur les systèmes Unix 99% du temps.

En règle générale, le répertoire / tmp existe sur les systèmes UNIX dotés d'autorisations ouvertes. Il existe spécifiquement pour les fichiers temporaires et est souvent configuré pour améliorer les performances.

Vous pouvez vérifier les autorisations en cours d' exécution ls -al /tmpsur la ligne de commande.

Si vous souhaitez en savoir plus à ce sujet, voir https://en.wikipedia.org/wiki/Temporary_folder

chim
la source
1
Ce n'est pas vraiment une bonne réponse à mon avis. Il n'y a pas d'explication et il est probable que cela ne fonctionne pas si vous /tmpne disposez pas des autorisations appropriées. Cela va même à l’encontre de la réponse acceptée (qui n’est pas extraordinaire non plus).
Fifi finance
Je ne pense pas que la réponse nécessite beaucoup d'explications, je dirais que le fonctionnement de la variable $ conf dans settings.php est une connaissance générale pour les développeurs Drupal. L’un des avantages de cette réponse est qu’elle est concise. Je ne suis pas sûr que cela contredit la réponse acceptée, la réponse acceptée fonctionnera et c'est une alternative. La différence entre cette méthode et le faire via l'interface utilisateur est que cela fonctionnera dans plusieurs environnements, mais vous devrez le définir individuellement dans l'interface utilisateur pour chaque environnement.
chim
16

Il est important de comprendre qu’un problème d’autorisations peut exister à la fois dans votre répertoire temporaire spécifié (défini dans admin / config / media / système de fichiers) ET dans le dossier dans lequel ce fichier temporaire sera copié. J'ai vu cette erreur plusieurs fois et ce n'est généralement pas un problème avec le dossier temporaire, mais le dernier dossier dans lequel ce fichier est copié après avoir été placé dans le dossier temporaire.

Assurez-vous également que le chemin du système de fichiers public est défini correctement.

Sheldonkreger
la source
1
C'était le cas pour moi. Dans mon cas, je devais définir la propriété du répertoire / sites / default / files nouvellement créé sur USERNAME: apache (sur certains systèmes, ce groupe serait appelé personne).
Evan Donovan
8

J'ai eu ce problème exact et je me suis assuré d'utiliser un chemin relatif (sites / default / files / tmp) pour l'emplacement de mon dossier tmp comme suggéré et j'ai également modifié les autorisations sur le dossier tmp pour m'assurer qu'il était accessible en écriture par apache mais mon problème existait toujours. . J'ai donc décidé de vérifier les messages de journal (Rapports >> Messages de journal récents) pour voir si je pouvais avoir une meilleure compréhension du problème. En faisant cela, j'ai reçu un message plus spécifique:

Les autorisations de fichier n'ont pas pu être définies sur public: // js.

Cela m'a incité à vérifier les autorisations sur le dossier js dans sites / default / files et comme il s'avère qu'apache ne pouvait pas y écrire, donc en modifiant les autorisations sur 775 pour ce dossier, je me suis débarrassé de mon message d'erreur. Je vous suggère donc de vérifier les autorisations pour tous les sous-dossiers des sites / default / files et pas seulement pour le dossier tmp si vous n'avez pas encore résolu votre problème. Je pensais que je partagerais cette information.

Andew
la source
Mon problème était le même que celui-ci, mais j'utilise les éléments suivants pour le corriger: sudo chgrp -R www-data / var / www / mysite
Wavesailor le
En supposant que vous combinez sudo chgrp -R www-data /var/www/mysiteavec "changer les autorisations à 775" . Ce n'est pas nécessaire. Drupal n'a pas besoin d'écrire dans tous les dossiers. Seuls vos dossiers de fichiers publics, privés et tmp.
rovr138
Oui - la chose cruciale ici, qu'aucune autre réponse ne soit mentionnée, est de trouver le répertoire de destination (généralement quelque part dans sites / default / files - / css et / js sont les premiers candidats si la concaténation JS / CSS est activée) et vous pouvez le faire. obtenez-le uniquement en consultant le journal.
William Turrell
… * Cependant * - l'étiquette sur le formulaire d'administration indique «Ce répertoire ne doit pas être accessible sur le Web». Par conséquent, à moins que vous n'ayez pris des mesures pour protéger / sites / default / files / tmp dans Apache ou Nginx, il y a une mauvaise idée.
William Turrell
5

vous pouvez trouver les paramètres du système de fichiers en le admin/config/media/file-system changeant en / tmp

vous pouvez également vérifier admin / reports / status pour tout problème de paramètres

sur la permission / tmp vous pouvez lui donner 755 et vous la trouverez dans / public_html

Ahmed
la source
2

Le message d'erreur peut parfois être trompeur

S'il indique que le problème concerne le répertoire de destination, Apache ne dispose probablement pas des autorisations nécessaires pour écrire dans le sous-dossier sites / default / files que Drupal souhaite placer dans le fichier.

Une bonne solution consiste à faire de l'utilisateur apache le propriétaire de tous les fichiers et répertoires sous sites / default / files

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

Ou quelque chose de similaire devrait résoudre les problèmes de répertoire de destination. Vérifiez que le propriétaire dispose des autorisations d'écriture et d'exécution sur tous les sous-répertoires.

chim
la source
1
Cette solution a sauvé ma journée, je travaille sur Ubuntu 14.014 et je l'ai faitchown -R www-data:www-data /var/www/html/sites/default/files/
Rishi Kulshreshtha le
2

Le répertoire de fichiers: Dépannage des serveurs Web basés sur Apache

Si les fichiers de répertoire ne sont pas "détenus" par le serveur Web, il existe deux façons de procéder. Ces instructions supposent que vous avez un accès shell au serveur Web. Si vous n’avez pas accès au shell, veuillez contacter votre fournisseur d’hébergement pour une assistance supplémentaire.

Idéalement, vous pourrez modifier le "propriétaire" des fichiers de répertoires pour qu'ils correspondent au nom du serveur Web. Sur un serveur Unix ou Linux, vous pouvez vérifier "qui" exécute le serveur Web en exécutant les commandes suivantes:

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

En fonction de votre serveur Web, l’une de ces commandes renverra une série de lignes comme celle-ci:

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

La première colonne du texte renvoyé est "l'utilisateur" sous lequel votre serveur Web fonctionne. Dans ce cas, l'utilisateur est www-data. Pour que votre répertoire de fichiers soit accessible en écriture au serveur Web, vous devez réaffecter sa propriété à l'aide de la commande suivante:

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

Si vous ne disposez pas des autorisations suffisantes sur votre serveur pour modifier la propriété du dossier, la meilleure option consiste à fournir un accès en écriture de groupe au dossier à l'aide de la commande suivante:

$ chmod -R 0770 sites/default/files

Vous devriez également pouvoir ajuster les autorisations du répertoire à l'aide d'un programme FTP, comme indiqué ci-dessus.

Une fois ces étapes terminées, confirmez que les autorisations appropriées ont été attribuées en accédant à Administrer -> Rapports -> Rapport d'état. Faites défiler jusqu'à la section intitulée «Système de fichiers» et vérifiez que vos paramètres sont maintenant corrects.

Source: Le répertoire de fichiers

Sukhjinder Singh
la source
1

Une autre source d'erreur est qu'il ne peut pas écrire dans le dossier de fichiers. Dans mon cas, je l'ai résolu en utilisant:

$chmod 777 sites/default/files/pictures/
homme libre
la source
15
Woah, vraiment? 777 sur ce qui est clairement un site de production? C'est juste un conseil irresponsable.
David Meister
Ouais, donnez au moins 755 $.
user1359
@ DavidMeister Je vous ai voté mais malheureusement sur hébergement mutualisé (vomi) 777 est parfois le seul moyen d'écrire dans un dossier
@andrewtweber êtes-vous sûr de cela? Même dans un environnement d'hébergement partagé, 775 devrait être à peu près aussi lâche que nécessaire. Pourriez-vous s'il vous plaît donner un exemple de fournisseur d'hébergement partagé qui nécessite 777? Si vous utilisez 777 sur un serveur partagé et que vous ne possédez pas de SMV, tous les autres utilisateurs du serveur peuvent accéder à vos fichiers.
David Meister
3
@andrewtweber aussi oui, la leçon n'est pas que "l'hébergement partagé" nécessite 777 mais que "l'hébergement épouvantable" nécessite 777.
David Meister
1

Dans certaines situations, cela peut être facilement résolu en supprimant les dossiers "ctools" et "js" dans default / files. Ces dossiers sont recréés par le système si nécessaire. Parfois, lors de la nouvelle installation d’un site existant, ces dossiers existants posent déjà des problèmes. De plus, si votre CSS ne fonctionne pas après la nouvelle installation d'un site existant, vous pouvez également le réparer en supprimant ces fichiers et en permettant à Drupal de les recréer.

Paul Trotter
la source
0

Mon ancienne et problématique configuration

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

Ma nouvelle configuration de travail

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
la source
Oui, exécuter est requis sur les dossiers pour pouvoir les utiliser. 775 serait probablement plus approprié que 774. Dans votre cas, avec la façon dont votre propriété est définie, 755 serait également une bonne option.
Rooby
0

Les autorisations correctes pour le dossier temporaire dépendent de la configuration de votre serveur Web.

Si vous utilisez Drupal avec PHP comme module de serveur Web, par exemple Apache, lorsque l'utilisateur défini dans le fichier de configuration du serveur Web principal à l'aide de la directive User doit y avoir accès en écriture.

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

Utilisateur apache

Taras
la source
0

J'ai eu le même problème après être passé d'un serveur à un autre.

J'ai essayé tout ce qui est suggéré ici, en plaçant les dossiers à 755, etc.

Mon dossier temporaire a été réglé sur "" tmp7zXhVVCO "et il a bien copié les fichiers d'installation, après chaque tentative, j'ai vu le fichier temporaire y être copié, mais l'installation a continué à échouer.

Le problème cependant, c’est le propriétaire, pas les droits, ce qui explique pourquoi 777 supprime cette erreur, mais nous savons tous que ce n’est pas une façon de procéder sur les sites de production.

Ce que vous devez faire, c'est changer votre dossier temporaire en quelque chose d'autre, tel que "temp" ou ce qui vous convient, tant qu'il n'existe pas encore , drupal créera ce nouveau dossier avec les droits apache , pas les droits utilisateur , et votre problème. sera résolu.

Kevin G
la source
Quand je fais cela, j'obtiens l'erreurThe directory ../temp2 does not exist and could not be created.
Paul Trotter
0

Je n'aime pas vraiment les réponses existantes, je vais donc en commencer une moi-même que je mettrai probablement à jour avec le temps. Principalement avec des commandes shell.

Pour l'instant, lancez ceci à partir de 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 finance
la source
0

De Configuration -> Médias -> Système de fichiers J'ai supprimé le / temp-catalogue. Après cela, je n'ai eu aucun problème.

Filip
la source
0

J'ai eu le même problème sur une migration. J'ai chmod 777 tous les sites / default / files mais l'erreur se produit toujours. Je change l'autorisation 775 sur les sites / default / files et le message a disparu. Je n'étais pas un problème de chemin privé, le mien est / var / tmp mais l'autorisation 775.

Bois
la source
0

Si vous rencontrez ce problème lors de l'utilisation de Pantheon et continue à obtenir l'erreur après avoir défini le ou les chemins de répertoire de fichiers (temporaires), vous devrez peut-être également basculer le mode de connexion de votre tableau de bord d'instance de développement de Git à SFTP.

Votre site Drupal tente peut-être de sauvegarder des fichiers dans un répertoire géré par Git (par exemple, si vous modifiez les paramètres de présentation et autres dans un thème de thèmes adaptatifs). Pour ce faire, passez à SFTP. Une fois les fichiers sauvegardés, vous pouvez revenir à Git et le tableau de bord vous invitera à valider les modifications apportées sur le serveur.

Kay V
la source
0

J'ai eu le même problème.

J'utilisais IIS dans Windows. Enfin, le problème concernait les autorisations du dossier sites / default / files et, bien entendu, de sites / default / files / tmp.

Enfin, j'ai redonné des autorisations complètes aux dossiers et cela a fonctionné.

Cordialement

jorge_vicente
la source