web-dev-qa-db-fra.com

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

Lors de l'utilisation d'une nouvelle installation de Drupal 7.10, j'ai défini le répertoire des téléchargements publics sur sites/uploads.

Lorsque j'ajoute ensuite une image à une instance de contenu, l'original est téléchargé sur 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?

10
jvc26

Bon, la réponse est en fait un peu plus subtile que je ne le pensais. Il s'avère que le remplacement de imagecache de D7 nécessite une certaine attention dans votre vhost nginx. Sans que les 404 soient 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 j'avais supposé 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.

13
jvc26

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
sheldonkreger

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

2
shrish

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 en changer umask sur php , afin qu'il puisse créer des fichiers ET des répertoires avec 755 autorisations max (c'était sur 744 max).

Et cela a définitivement résolu le problème. :)

1
Kojo

Bien que vous disiez que vous avez 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 été un problème d'autorisations.

Conseils généraux: Tout d'abord, allez dans admin/config/media/file-system, et cliquez sur "Save configuration". Cela entraînera Drupal pour réévaluer les autorisations des répertoires définis et vous donnera des messages d'erreur s'il trouve 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 la meilleure façon de vraiment vous assurer que vous avez les 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.

1
Letharion

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 Drupal installation.
Toutes les images, y compris les miniatures, moyennes et grandes, s'affichent désormais.

0
Chetabahana

Bibliothèque de code GP Créer une image miniature par php Lorsque nous téléchargeons des images de grande taille sur le serveur. Les grandes images téléchargées prennent plus de temps à charger sur la page Web, nous devons donc afficher des images de petite taille sur notre page Web. La vignette d'image est une solution pour générer la vignette de l'image téléchargée pour afficher les images de taille requise sur notre site Web. http://codelibrary.googleplus.co.in/create-thumbnail-image-by-php/

0
user2275071