Es un error bastante común y no demasiado documentado que provoca que no seamos capaces de cargar archivos en nuestro cms, y que nos puede aparecer de repente o simplemente provocarlo nosotros mismos sin darnos cuenta. Aprendemos de donde viene el error y cómo solucionarlo.
Como comentábamos, el error de «Imágen inválida» o «Not a valid image» en inglés, puede darnos muchos dolores de cabeza, ya que el síntoma es que provoca un error al intentar subir cualquier tipo de imágen sea cual sea. Fallará en todos los formatos, pero para saber realmente por qué falla deberíamos probar a bucear en los logs de errores.
Posiblemente si hemos probado a mirar los logs, estemos desconcertados por que el error que nos devuelve debería ser algo parecido a esto
PHP Warning: getimagesize(/tmp/phpkHrzUV): failed to open stream: Operation not permitted in /httpdocs/administrator/components/com_media/helpers/media.php on line 91
Y qué demonios significa esto te estarás preguntando, pues no es mas que un simple error que nos indica que el script no tiene permisos para ejecutar la función getimagesize sobre la ruta indicada, que en este caso es un archivo temporal.
Esto puede deberse a una falta de permisos sobre la carpeta donde se guardan los archivos temporales en apache, por lo que lo más correcto será revisar si no hemos modificado alguna configuración en nuestro apache y si lo hemos hecho corregirla. Este es el motivo de que puedas tener varios joomlas en el mismo servicio de hosting, pero en uno deje de funcionar mientras en los otros no tengas problema, ya que por lo general apache se usa sobre hosts virtuales o VirtualHost.
Arreglar el error Imágen inválidad e joomla con htaccess
Si te has encontrado con el problema y has probado a cambiar permisos de escritura a carpetas, darle a todo chmod 777 sin ningún resultado y otros métodos que no funcionan que puedes haber encontrado por ahí, entonces lo que debes hacer es insertar en tu configuración de apache algo como lo siguiente (en httpd.conf o donde tengas la configuración concreta para el dominio que te da problemas)
<Directory "/var/www/vhosts/dominio.com/httpdocs"> allow from all Options +Indexes php_admin_value open_basedir /var/www/vhosts/dominio.com/httpdocs/:/var/www/vhosts/dominio.com/tmp/ php_admin_value upload_tmp_dir /var/www/vhosts/dominio.com/tmp/ </Directory>
Debes fijarte que esta instrucción va dentro del virtualhost del dominio afectado y que seguramente solo tendrás que añadir las líneas que empiezan por php_admin_value. También ten en cuenta que tienes que poner las rutas con permisos de escritura que tengas a tu disposición, ya que si no colocas la ruta exacta a una carpeta en la que tengas permisos de escritura no te va a funcionar.
Si tienes cualquier duda o no sabes como hacerlo en tu hosting o dominio, deja tu comentario y te ayudaré en todo lo posible.
Ver comentarios (1)
Yo lo solucioné de una manera más sencilla. En el archivo php.ini añadí la siguiente linea:
upload_tmp_dir = /www/root/htdocs/tmp
(lógicamente cada uno debe cambiar la ruta de la carpeta 'tmp' por la suya)