Lors de l'utilisation d'une nouvelle installation de Drupal 7.10, j'ai défini le répertoire pour les téléchargements publics sur sites/uploads
.
Lorsque j'ajoute ensuite une image à une instance de contenu, j'obtiens l'original téléchargé sites/example.org/files/imagename.png
comme prévu. Cependant, les autres images (vignette, moyenne et grande) ne sont pas créées à sites/example.org/styles/*
.
Le répertoire est lisible et inscriptible par l'utilisateur PHP5-FPM, et il ne devrait donc y avoir aucune autorisation de problème.
Pourquoi cela arrive-t-il? Comment puis-je le réparer?
Réponses:
Bon, la réponse est en fait un peu plus subtile que je ne le pensais. Il s'avère que le
imagecache
remplacement du D7 nécessite une certaine attention dans votre vhost nginx. Sans les 404 envoyés à Drupal pour les fichiers manquants, les images ne sont pas créées - quelque chose que je n'avais pas réalisé au départ, car je supposais qu'elles avaient été créées lors du téléchargement.Il doit être ajouté à la définition de votre serveur et vous devez être prêt à lancer. De toute évidence, le chemin peut avoir besoin d'être modifié pour votre configuration, mais pour le mien, il l'était.
la source
Assurez-vous de vérifier à la fois le chemin du système de fichiers public et le chemin temporaire dans admin / config / media / file-system
Une fois que j'ai défini ces deux dossiers avec les autorisations appropriées, mes sous-dossiers sont automatiquement créés lorsque j'enregistre un fichier, l'image est enregistrée et le message d'erreur a disparu :-)
la source
Dans mon cas, le problème était dû au fait que les images étaient récupérées à l'aide de https,
J'ai ajouté les lignes suivantes sur les paramètres de page sécurisée pour ignorer https sur les chemins de fichiers.
*/files/*
J'espère que cela aide quelqu'un. :)
la source
Bien que vous disiez avoir vérifié les autorisations, c'est toujours par là que je commencerais, car j'ai moi-même eu ce problème fréquemment, et c'est presque toujours un problème d'autorisations.
Conseil général: Tout d'abord, allez dans admin / config / media / file-system, et cliquez sur "Save configuration". Cela entraînera Drupal à réévaluer les autorisations des répertoires définis et vous donnera des messages d'erreur s'il détecte un problème.
Deuxièmement: je suppose que vous avez un apache, ou www-data, ou d'autres utilisateurs, qui possède le serveur Web, par opposition à l'utilisateur php? Sur un système Linux ou Mac, sudo à cet utilisateur. Essayer d'écrire un fichier en tant que bon utilisateur est le meilleur moyen de vraiment vous assurer que vous disposez des bonnes autorisations. Accédez à sites / domain.com / files / et appelez "echo data> new_file; cat new_file;" dans un terminal. Cela vérifiera que vous pouvez réellement écrire dans le répertoire d'écriture. Faites de même avec votre répertoire tmp. J'espère que quelqu'un d'autre peut suggérer comment effectuer les mêmes actions sur un système comme Windows.
Troisièmement: pour exclure les autorisations de répertoire, appliquez récursivement 777 le répertoire des fichiers. Vous pouvez ensuite restaurer des autorisations plus saines avec
Quatrièmement: assurez-vous que le répertoire tmp a toutes les permssions.
Cinquièmement: Vous devrez peut-être commencer à déboguer le code si vous l'avez compris maintenant.
la source
Pour compléter la réponse de Letharion, voici la méthode que j'ai utilisée pour créer des styles d'images miniatures, moyennes ...
Je précise que j'ai d'abord vérifié tous les points énumérés ci-dessus, sans résultat.
Ensuite (sur un OS Linux), j'ai édité /usr/local/etc/suphp.conf pour changer umask sur php , afin qu'il puisse créer des fichiers ET des répertoires avec 755 permissions max (c'était sur 744 max).
Et cela a définitivement résolu le problème. :)
la source
Je suis sur Drupal 8.0.3.
Dans mon cas, ce dossier n'est pas généré lors de l'installation.
Je l'ai donc mis en copiant à partir de l'ancienne version de l'installation Drupal.
Toutes les images, y compris les miniatures, moyennes et grandes, s'affichent désormais.
la source
Vérifiez votre fichier .htaccess dans le répertoire racine et les fichiers. Remplacez-le par le nouveau fichier .htaccess si nécessaire
la source