No se pueden crear imágenes en miniatura, medianas y grandes


10

Cuando utilizo una nueva instalación de Drupal 7.10, he configurado el directorio para cargas públicas en sites/uploads.

Cuando luego agrego una imagen a una instancia de contenido, obtengo el original cargado sites/example.org/files/imagename.pngcomo se esperaba. Sin embargo, las otras imágenes (miniatura, mediana y grande) no se crean en sites/example.org/styles/*.

El usuario de PHP5-FPM puede leer y escribir el directorio, por lo que no debería haber permisos de emisión.

¿Por qué pasó esto? ¿Cómo puedo arreglarlo?


Si está utilizando nginx como servidor web, necesita una configuración adicional en su servidor virtual, lea aquí para obtener más información: drupal.org/node/1048570#comment-4047984
Gnuget

Respuestas:


13

Correcto, la respuesta es de hecho un poco más sutil de lo que me di cuenta. Resulta que el imagecachereemplazo de D7 necesita algo de atención en su nginx vhost. Sin los 404 que se envían a Drupal por los archivos que faltan, las imágenes no se crean, algo de lo que no me di cuenta inicialmente, ya que supuse que se crearon al cargarlas.

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

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

Debe agregarse a la definición de su servidor, y debe estar listo para rodar. Claramente, la ruta puede necesitar modificaciones para su configuración, pero para la mía lo fue.


1
Tenga en cuenta que la parte @rewrite debe definirse adecuadamente en otra parte del archivo de configuración para que esto funcione. Dicho esto, ya estaba en el mío y esto resolvió mi problema también, así que gracias jvc26 :)
El Yobo

Buen punto de @ElYobo: he actualizado la respuesta para asegurarme de que esté clara. Gracias
jvc26

¿Afectaría esto a una configuración de proxy inverso nginx? Tengo el mismo problema y esto no parece solucionarlo.
Grizly

Si desea que se creen al cargar drupal.org/project/imageinfo_cache, haga eso
mikeytown2

Buena atrapada. Esto eventualmente me llevó a usar el archivo de servidor recomendado de nginx en lugar del que DigitalOcean configura automáticamente con una instalación de Drupal con un solo clic.
Meglio

2

Asegúrese de verificar tanto la ruta del sistema de archivos públicos como la ruta temporal en admin / config / media / file-system

Una vez que configuré ambas carpetas con los permisos correctos, mis subcarpetas se crean automáticamente cuando guardo un archivo, la imagen se guarda y el mensaje de error desaparece :-)


2

En mi caso, el problema estaba causando porque las imágenes se obtuvieron usando https,

Agregué las siguientes líneas en la configuración de página segura para ignorar https en las rutas de archivo.

*/files/*

Espero que esto ayude a alguien. :)


1

Si bien usted dice que ha verificado los permisos, todavía es donde yo comenzaría, ya que he tenido este problema con frecuencia, y casi siempre ha sido un problema de permisos.

Consejo general: en primer lugar, vaya a admin / config / media / file-system y haga clic en "Guardar configuración". Esto hará que Drupal reevalúe los permisos de los directorios establecidos y le dará mensajes de error si encuentra un problema.

Segundo: ¿Supongo que tiene un apache, o www-data, u otros usuarios, que posee el servidor web, en lugar del usuario de php? En un sistema Linux o Mac, sudo a ese usuario. Intentar escribir un archivo como el usuario correcto es la mejor manera de asegurarse de que tiene los permisos correctos. Vaya a sites / domain.com / files / y llame a "echo data> new_file; cat new_file;" en una terminal Esto verificará que realmente puede escribir en el directorio de escritura. Haga lo mismo con su directorio tmp. Esperemos que alguien más pueda sugerir cómo realizar las mismas acciones en un sistema como Windows.

Tercero: para descartar los permisos del directorio, aplique 777 recursivamente el directorio de archivos. Puede restaurar permisos más sanos después con

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

Cuarto: asegúrese de que el directorio tmp tenga permisos completos.

Quinto: es posible que deba comenzar a depurar el código si ya lo ha descubierto.


Gracias por las sugerencias: ya he probado lo anterior, no hay errores de Drupal en el cambio del sistema de archivos, por lo que los permisos deben estar bien. Todos los procesos de PHP se ejecutan como el usuario que puede escribir en ese directorio, por lo que el usuario que ejecuta el servidor web no hará una diferencia en la capacidad de escritura. Han verificado manualmente los permisos compatibles con escritura. / tmp es como siempre 777, así que no hay problemas de escritura allí. La discrepancia de ruta ha sido ordenada fue un error de mi parte.
jvc26

Como aviso, el problema era uno de nginx config, con problemas para el paso de 404 a Drupal que a su vez desencadenó la creación de miniaturas.
jvc26

1

Para completar la respuesta de Letharion, este es el método que utilicé para crear estilos de imagen en miniatura, medio ...

Preciso que primero verifiqué todos los puntos enumerados anteriormente, sin resultado.

Luego (en un sistema operativo Linux), edité /usr/local/etc/suphp.conf para cambiar umask en php , de modo que pudiera crear archivos Y directorios con 755 permisos como máximo (estaba en 744 como máximo).

Y esto resolvió definitivamente el problema. :)


0

Estoy en Drupal 8.0.3.
En mi caso, esta carpeta no se genera en la instalación.

sites/default/files/field/image

Así que lo puse copiando de la versión anterior de la instalación de Drupal.
Todas las imágenes, incluyendo miniaturas, medianas y grandes, ahora se muestran.


-1

Verifique su archivo .htaccess en el directorio raíz y de archivos. Reemplace con el nuevo archivo .htaccess si es necesario

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.