¿Cómo corregir un error HTTP al cargar imágenes?

28

Estoy usando WordPress 3.4.1 en Ubuntu 12.04 usando Apache y PHP 5.3.X

Cuando inicio sesión en el tablero y agrego una nueva publicación. Luego intente cargar una imagen para establecerla como imagen destacada, aparece un cuadro rojo con el mensaje "Error HTTP".

He leído acerca de personas que dicen no usar el cargador de flash y solo usar el cargador del navegador, pero cuando lo intento, obtengo un error interno del servidor 500.

He intentado agregar AddType x-mapp-php5 .phpen la parte superior de mi archivo .htaccess, sin suerte en el cambio.

Deshabilitar TODOS los complementos no tuvo ningún efecto. Intenté una nueva instalación. Sin suerte.

Actualización 17/10/2016: si utiliza funciones o funciones personalizadas, intente utilizar una función / funciones nativas y vuelva a intentarlo.

Cosas a considerar comprobar:

  • Propiedad del archivo
  • Permisos de archivo
  • configuración de .htaccess
  • PHP versión 7+
  • Versión actual de WordPress

Si está operando detrás de un proxy, asegúrese de tener los tiempos de espera del servidor proxy configurados correctamente.

WordPress 3.4.1 Error de carga de medios HTTP

Michael Ecklund
fuente
¿Cuál es el razonamiento detrás AddType x-mapp-php5 .php? Eso parece ser muy específico del servidor. Creo que es más probable que rompa su sitio (es decir, PHP) horriblemente (o no haga nada si tiene suerte) en lugar de mejorar algo.
MrWhite

Respuestas:

25

Puse el siguiente código en mi functions.phparchivo. ¡Funciona!

add_filter( 'wp_image_editors', 'change_graphic_lib' );

function change_graphic_lib($array) {
  return array( 'WP_Image_Editor_GD', 'WP_Image_Editor_Imagick' );
}

Cuando esto ayuda es porque cambia el módulo de código PHP utilizado para procesar la imagen cargada para usar con WordPress.

Este procesamiento incluye mover la imagen a la base de datos de la biblioteca de medios y generar las imágenes de diferentes tamaños ("miniatura", "medio", "grande") a las que WordPress siempre quiere que estén disponibles los temas para acceder.

Hace que se use el módulo "GD", porque es el primero. En algunas configuraciones de servidor, la nueva biblioteca "Imagick" no está jugando bien con otras para ciertos escenarios de imágenes, como grandes dimensiones de píxeles, por lo que obligar a utilizar la biblioteca "GD" es una solución.

Allen
fuente
Es mejor crear un pequeño complemento que ponerlo en el functions.php, porque si cambia el tema, pierde el código. Y estoy seguro de que quieres que esto funcione después de un cambio de tema 😊
EliasNS
1
+1 Esto funcionó para mí cuando me encontré con este problema con una configuración WP 4.9.4 lista para usar en una nueva cuenta de HostGator. @EliasNS noob aquí; ¿Cuál es la forma correcta de hacer un pequeño complemento para esto?
Andrew Janke
@ AndrewJanke, puedes usar un complemento 😅 es.wordpress.org/plugins/pluginception
EliasNS
"Imagick" ? ¿No es "ImageMagick" ?
Peter Mortensen
21

Después de solucionar problemas con @Wyck en el chat, nos hemos reducido al problema subyacente.

El problema estaba relacionado con la configuración de mi servidor que no tenía la cantidad adecuada de memoria asignada a Apache / PHP.

Si alguien tiene este mismo problema, intente verificar que tiene suficiente memoria de servidor (64 MB +) asignada a Apache / PHP en la configuración de su servidor. También puede agregar esto a su archivo wp-config.php:

define('WP_MEMORY_LIMIT', '64MB');

Si la solución anterior no funciona, lea el artículo ¿Problemas con el cargador de imágenes / medios? para una mayor resolución de problemas.

Intente agregar uno por uno o todos los siguientes ajustes de .htaccess al archivo .htaccess en el directorio raíz de su instalación de WordPress.

En serio, pruebe una de cada una de las soluciones a continuación para saber cuál hizo el truco. No los pegue todos en su archivo .htaccess de inmediato.

Prueba esta línea:

AddType x-mapp-php5 .php

mod_security podría estar causando problemas. Deshabilítelo para ver si ese es el problema. Para hacer esto, cree un archivo .htaccess en su directorio wp-admin. Agregue esto:

<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>

Si está utilizando el control de acceso basado en la autenticación en su servidor web (a menudo conocido como htpasswd, autenticación básica, directorio protegido por contraseña o similar), WordPress no puede manejarlo para Flash Uploader, Cron y XMLRPC. Los archivos relacionados deben excluirse para funcionar. Tenga en cuenta que esto podría romper sus consideraciones de seguridad.

# Exclude the file upload and WordPress CRON scripts from authentication
<FilesMatch "(async-upload\.php|wp-cron\.php|xmlrpc\.php)$">
    Satisfy Any
    Order allow,deny
    Allow from all
    Deny from none
</FilesMatch>

Una nota final: algunos han dicho que si usa una versión menor de PHP 5.3.X puede intentar deshabilitar el Modo seguro de PHP.

Si está ejecutando WordPress en varios sitios y está recibiendo errores HTTP o errores internos del servidor, relacionados con la carga de imágenes, lea Carga de imágenes a sitios múltiples causa error HTTP ) para otras posibles ideas y soluciones de solución de problemas.

Michael Ecklund
fuente
ok ... es bueno saberlo ... ¿leíste que WP intenta asignar hasta 256 MB de RAM, por lo que define('WP_MEMORY_LIMIT', '64MB');debería ser más grande si es posible?
Damien
1
Si estás usando WP 4.1.1, el AddType x-mapp-php5 .phpya no es una solución viable ya que obliga a la página simplemente imprimir el código PHP como texto sin formato
cameronjonesweb
1
O agregue esto al archivo de configuración de su sitio si está utilizando nginx:client_max_body_size 128m;
Flatron
4

Me encontré con el mismo error al intentar cargar archivos multimedia en WordPress. En Chrome, aparece como un http: error; en Firefox, el error se ve bastante diferente. La web contiene historias completas de personas que han pasado días persiguiendo el error (yo también :-(). Las soluciones abundan, pero nadie explica por qué, al menos no de una manera que sea consistente con los síntomas.

Mi contribución digna de tuppence: noté que el problema se correlaciona con una falla de segmentación señalada en el archivo de registro de apache2. Eso me molesta, porque es difícil de diagnosticar.

Reiniciar todo el servidor eliminó todos los síntomas y, de repente, pude volver a cargar archivos multimedia en Wordpress. Frustrantemente, no tengo idea de por qué ocurre esto. El reinicio efectivamente me impidió seguir investigando, y ahora tendré que esperar (¿semanas? ¿Meses?) Para que el problema vuelva a aparecer. Espero que esto ayude a otros en su búsqueda de la causa de este problema. Sin embargo, mi esposa está feliz porque ya no puedo pasar noches persiguiendo este problema ...

Stef Joosten
fuente
1

He resuelto este problema cambiando Mi dueño de rootde apachela siguiente manera.

chown -R apache:apache /var/www/html/mydomain

Y luego he cambiado el permiso del wp-content/uploads/a 775.

Después de eso, intenté subir una imagen en los medios. Tuve éxito al subir la imagen.

imran
fuente
0

Tuve el mismo problema. Intenté varias soluciones, incluido el cambio del procesador de imagen predeterminado de PHP GD a ImageMagick usando el complemento Force Image Magick

Esto ayudó con el error HTTP / el error 500, pero ya no se generaban miniaturas. Luego volví a desactivar el complemento y lo que me ayudó fue esta respuesta a la pregunta Parece que el cambio de tamaño de la imagen no funciona bien . Mi PHP_MEMORY_LIMITse estableció en 160MBcuál es el máximo absoluto que mi host permite.

Para cargar imágenes, esto resultó en las máximas dimensiones posibles de la imagen de alrededor 6000 x 6000 pxcuando se usa PHP GD y se generan miniaturas. Por lo tanto, es importante no solo verificar el tamaño del archivo sino también las dimensiones de la imagen. Cargar una imagen con dimensiones más altas dio como resultado un error HTTP / error 500 incluso con archivos de tamaño pequeño.

intagli
fuente
0

Yo he experimentado dicha emisión muchas veces y resuelto mediante el aumento memory_limit = 256Men php.ini o añadir define( 'WP_MEMORY_LIMIT', '256M' );en wp-config.phpel archivo (* Si es necesario se puede aumentar la memoria de más de 256M) la mayor parte del tiempo.

Otra posible solución podría ser dar permiso a la \wp-content\uploads\carpeta; comando: chmod -R 0755 wp-content\uploads\.

Espero que te pueda ayudar también.

rony2k6
fuente