Hola!
Tengo el siguiente código funcionando sin problemas en servidores Windows.
El problema me surge al subirlo en servidores Linux.
Supongo que es un problema de permisos, y con respecto al upload, lo único que encontré fue este hilo http://comunidad.siu.edu.ar/index.php?topic=3027.0, al cual no tengo permisos para acceder por lo que no sé si a alguien más le sucedió y como pudo solucionarlo.
Código que sube la imagen:
<?php...
function evt__formulario__aplicar($datos)
{...
if (is_array($datos['comprobante_imagen']) || !empty($datos['comprobante_imagen']['name'])) {
//Se subio una imagen
$temp_archivo = $datos['comprobante_imagen']['tmp_name'];
manipulacion_imagenes::redimensionar_imagen($temp_archivo, $datos['comprobante_imagen']['name'], 400);
$imagen = fopen($temp_archivo['path'], 'rb');
$this->dep('movimientos')->set_blob('comprobante_imagen', $imagen);
}
$this->dep('movimientos')->sincronizar();
...}
Código que produce el error en Linux:
<?php...
function redimensionar_imagen(&$archivo=null, $nombre=null, $dim_max_px=200)
{
$archivo = strtolower($archivo);
$img = imagecreatefromjpeg($archivo);
$dimensiones = getimagesize($archivo);
$wAux = $dimensiones[0];
$hAux = $dimensiones[1];
if ($wAux > $hAux) {
$escala = $dim_max_px / $wAux;
} else {
$escala = $dim_max_px / $hAux;
}
$w = round($wAux * $escala);
$h = round($hAux * $escala);
$imagen = imagecreatetruecolor($w, $h);
imagecopyresampled($imagen, $img, 0, 0, 0, 0, $w, $h, $wAux, $hAux);
ob_start();
imagejpeg($imagen);
$imagen = ob_get_contents();
ob_end_clean();
$temp_nombre = md5(uniqid(time()));
$archivo_nuevo = toba::proyecto()->get_www_temp($temp_nombre);
$temp_imagen = fopen($archivo_nuevo['path'], 'wb');
fwrite($temp_imagen, $imagen);
fclose($temp_imagen);
$archivo = $archivo_nuevo;
return null;
}
Errores que se muestran en el servidor:
Warning: imagecreatefromjpeg(/tmp/phpqfofcx) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /toba_1.5.0/proyectos/miproyecto/php/recursos/manipulacion_imagenes.php on line 12Warning: getimagesize(/tmp/phpqfofcx) [function.getimagesize]: failed to open stream: No such file or directory in /toba_1.5.0/proyectos/miproyecto/php/recursos/manipulacion_imagenes.php on line 21
Warning: Division by zero in /toba_1.5.0/proyectos/unrn_pagos/php/recursos/manipulacion_imagenes.php on line 27
Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /toba_1.5.0/proyectos/miproyecto/php/recursos/manipulacion_imagenes.php on line 31
Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /toba_1.5.0/proyectos/miproyecto/php/recursos/manipulacion_imagenes.php on line 32
Warning: fopen(/) [function.fopen]: failed to open stream: Is a directory in /toba_1.5.0/proyectos/miproyecto/php/recursos/manipulacion_imagenes.php on line 55
Warning: fwrite(): supplied argument is not a valid stream resource in /toba_1.5.0/proyectos/miproyecto/php/recursos/manipulacion_imagenes.php on line 56
Warning: fclose(): supplied argument is not a valid stream resource in /toba_1.5.0/proyectos/miproyecto/php/recursos/manipulacion_imagenes.php on line 57
Cabe aclarar que ya se probó con lo siguiente:
- poner los permisos en 777 para la carpeta /tmp
- cambiar la carpeta de upload en el php ini a toba_1.5.0/temp, y darle permisos 777
Desde ya, mil gracias por cualquier idea que pueda ocurrirseles.