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 et comment modifier les autorisations. Je reçois toujours ce message:
Le fichier spécifié temporaire: // file3Hl91E n'a pas pu être copié, car le répertoire de destination n'est pas correctement configuré. Cela peut être dû à un problème avec les 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
.
Cochez Administrateur -> Configuration -> Média -> Système de fichiers pour personnaliser votre chemin tmp. Assurez-vous d'utiliser des chemins relatifs et de disposer des privilèges appropriés pour l'utilisateur Apache.
Personnellement, j'aime cet article correction du téléchargement de fichiers . Il a de bonnes observations. Ça a marché pour moi.
Récemment, j'ai téléchargé mon site sur mon ordinateur Mac. Il arrive que sur mon Mac j'utilisais mod_userdir
pour Apache et j'ai oublié que dans /etc/Apache2/users/nameofuser.conf
Je dois définir AllowOverride All
, sinon j'aurai le message suivant:
Le fichier spécifié temporaire n'a pas pu être copié car le répertoire de destination n'est pas correctement configuré.
Dans votre settings.php
$conf['file_temporary_path'] = '/tmp';
Cela fonctionnera sur les systèmes Unix 99% du temps.
Habituellement, le répertoire/tmp existe sur les systèmes UNIX avec des autorisations ouvertes, et il existe spécifiquement pour les fichiers temporaires et est souvent configuré pour améliorer les performances.
Vous pouvez vérifier les autorisations en exécutant ls -al /tmp
sur la ligne de commande.
Si vous souhaitez en savoir plus à ce sujet, voir https://en.wikipedia.org/wiki/Temporary_folder
Il est important de comprendre qu'un problème d'autorisations peut exister dans les deux votre répertoire temporaire spécifié (qui est défini dans admin/config/media/file-system) ET dans le dossier où ce fichier temporaire va être 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 dossier final où ce fichier est copié après vivant dans le dossier temporaire.
Assurez-vous également que le chemin du système de fichiers public est correctement défini.
J'ai eu ce problème exact et je me suis assuré d'utiliser le chemin relatif (sites/défaut/fichiers/tmp) pour l'emplacement de mon dossier tmp comme suggéré et j'ai également changé 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 du journal (Rapports >> Messages du journal récents) pour voir si je pouvais mieux comprendre quel était le 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 à 775 sur 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 dans sites/default/files et pas seulement le dossier tmp si vous n'avez pas encore résolu votre problème. Je pensais juste que je partagerais cette information.
vous pouvez trouver les paramètres du système de fichiers dans admin/config/media/file-system
changez-le en/tmp
vous pouvez également vérifier admin/reports/status pour tout problème de paramètres
à propos de la permission/tmp vous pouvez lui donner 755 et vous la trouverez dans/public_html
Le message d'erreur peut parfois être trompeur
S'il indique que le problème est lié au répertoire de destination, Apache n'a probablement pas les autorisations pour écrire dans le sous-dossier sites/default/files dans lequel Drupal veut placer 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 supprimer 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.
Le répertoire des fichiers: Dépannage des serveurs Web basés sur Apache
Si les fichiers de répertoire n'appartiennent pas au serveur Web, il existe deux façons de procéder. Ces instructions supposent que vous disposez d'un accès Shell au serveur Web. Si vous n'avez pas accès à Shell, veuillez contacter votre hébergeur pour une assistance supplémentaire.
Idéalement, vous pourrez changer le "propriétaire" des fichiers de répertoire pour qu'ils correspondent au nom du serveur Web. Sur un serveur Unix ou Linux, vous pouvez vérifier "qui" le serveur Web s'exécute en émettant les commandes suivantes:
$ ps aux |grep Apache # for Apache 2.x
$ ps aux |grep httpd # for Apache 1.x
Selon votre serveur Web, l'une de ces commandes renvoie 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 rendre votre répertoire de fichiers accessible en écriture par le 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 suivante consiste à fournir un accès en écriture de groupe au dossier avec la commande suivante:
$ chmod -R 0770 sites/default/files
Vous devriez également être en mesure d'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 confirmez que vos paramètres sont maintenant corrects.
Source: Le répertoire des fichiers
Dans certaines situations, cela peut être facilement résolu en supprimant les dossiers "ctools" et "js" dans les fichiers/par défaut. Ces dossiers sont recréés par le système si nécessaire. Parfois, lors d'une 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 avoir fait une nouvelle installation d'un site existant, cela peut également être corrigé en supprimant ces fichiers et en laissant drupal les recréer.
Je n'aime pas vraiment les réponses existantes, je vais donc en commencer une moi-même que je mettrai probablement à jour au fil du temps. Principalement avec les commandes Shell.
Pour l'instant, exécutez 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
Mon ancien et configuration problématique
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 et fonctionne très bien configuration
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
Une autre source d'erreur est qu'il ne peut pas écrire dans le dossier des fichiers. Dans mon cas, je l'ai résolu en utilisant:
$chmod 777 sites/default/files/pictures/
J'ai eu ce même problème après être passé d'un serveur à un autre.
J'ai essayé tout ce qui est suggéré ici, en définissant les dossiers sur 755 et ainsi de suite.
Mon dossier temporaire était réglé sur "" tmp7zXhVVCO "et il copiait bien les fichiers d'installation, après chaque nouvelle tentative, je voyais le fichier temporaire y être copié, mais l'installation échouait.
Le problème est cependant le propriétaire et non les droits, ce qui explique pourquoi 777 supprime cette erreur, mais nous savons tous que ce n'est pas une façon d'aller sur les sites de production.
Ce que vous devez faire, c'est changer votre dossier temporaire pour autre chose, comme "temp" ou tout ce qui vous convient, tant qu'il n'existe pas encore, drupal va créer ce nouveau dossier avec Apache droits, pas tilisateur droits, et votre problème sera résolu.
Si vous rencontrez ce problème à l'aide de Pantheon et continuez à obtenir l'erreur après avoir défini le (s) chemin (s) du répertoire des fichiers (temporaires), vous devrez peut-être également basculer le mode de connexion sur votre tableau de bord d'instance de dev de Git vers SFTP.
Votre Drupal peut tenter d'enregistrer des fichiers dans un répertoire géré par Git (par exemple, si vous modifiez les paramètres de mise en page et autres dans un thème Thèmes adaptatifs). Pour ce faire, passez à SFTP. Une fois les fichiers enregistrés, vous pouvez revenir à Git et le tableau de bord vous invitera à valider les modifications apportées sur le serveur.
J'ai eu le même problème lors d'une migration. J'ai chmod 777 tous les sites/fichiers par défaut/mais l'erreur se produit toujours. Je change l'autorisation 775 sur les sites/défaut/fichiers et le message a disparu. Je n'étais pas un problème de chemin privé, le mien est/var/tmp mais l'autorisation 775.
Dans Configuration -> Média -> Système de fichiers, j'ai supprimé le/temp-catalogue. Après cela, je n'ai eu aucun problème.
J'ai eu le même problème.
J'utilisais IIS sous Windows. Enfin, le problème concernait les autorisations dans le dossier sites/default/files et, évidemment, dans sites/default/files/tmp.
Enfin, j'ai redonné "Autorisations complètes" aux dossiers, et cela a fonctionné.
Cordialement
Les autorisations correctes pour le dossier temporaire dépendent de la configuration de votre serveur Web.
Si vous exécutez Drupal avec PHP comme module de serveur Web, par exemple Apache, lorsque l'utilisateur qui est défini dans le fichier de configuration du serveur Web principal à l'aide de la directive utilisateur doit avoir une écriture y accéder.
% grep -i "user" /etc/httpd/conf/httpd.conf
Utilisateur Apache