Impossible de créer des images miniatures, moyennes et grandes


10

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.pngcomme 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?


Si vous utilisez nginx comme serveur Web, vous avez besoin d'une configuration supplémentaire dans votre vhost, lisez ici pour plus d'informations: drupal.org/node/1048570#comment-4047984
Gnuget

Réponses:


13

Bon, la réponse est en fait un peu plus subtile que je ne le pensais. Il s'avère que le imagecacheremplacement 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.

location @rewrite {
    rewrite ^/(.*)$ /index.php?q=$1;
}

location ~ ^/sites/.*/files/styles/ {
    try_files $uri @rewrite;
}

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.


1
Notez que la partie @rewrite doit être définie de manière appropriée ailleurs dans le fichier de configuration pour que cela fonctionne. Cela dit, il était déjà dans le mien et cela a également résolu mon problème, alors merci jvc26 :)
El Yobo

@ElYobo bon point - ont mis à jour la réponse pour s'assurer qu'elle est claire. Merci
jvc26

Cela affecterait-il une configuration de proxy inverse nginx? J'ai le même problème et cela ne semble pas résoudre ce problème.
Grizly

Si vous voulez qu'ils soient créés lors du téléchargement, drupal.org/project/imageinfo_cache le fait
mikeytown2

Bonne prise. Cela m'a finalement amené à utiliser le fichier serveur recommandé par nginx au lieu de celui que DigitalOcean configure automatiquement avec une installation Drupal en un clic.
Meglio

2

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 :-)


2

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. :)


1

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

find . -type d -print0 | xargs -0 chmod 755
find . -type f -print0 | xargs -0 chmod 644

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.


Merci pour les suggestions: J'ai déjà essayé ce qui précède, aucune erreur de Drupal sur le changement de système de fichiers, donc les autorisations doivent être correctes. Les processus PHP s'exécutent tous en tant qu'utilisateur qui peut écrire dans ce répertoire, donc l'utilisateur sous lequel le serveur Web s'exécute ne fera aucune différence pour la capacité d'écriture. Avoir vérifié manuellement les autorisations compatibles avec l'écriture. / tmp est comme d'habitude 777 donc aucun problème d'écriture là-bas. L'écart de chemin a été trié était une erreur de ma part.
jvc26

En tête, le problème était celui de la configuration nginx, avec des problèmes pour le passage de 404 à Drupal qui à leur tour déclenchent la création de miniatures.
jvc26

1

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. :)


0

Je suis sur Drupal 8.0.3.
Dans mon cas, ce dossier n'est pas généré lors de l'installation.

sites/default/files/field/image

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.


-1

Vérifiez votre fichier .htaccess dans le répertoire racine et les fichiers. Remplacez-le par le nouveau fichier .htaccess si nécessaire

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.