Uso un código PHP el cual funciona perfectamente si lo ejecuto en mi servidor, pero en cambio, al probarlo en un servidor gratuito (byethost, 000webhost), el comando de PHP no es capaz de mover la imagen al directorio donde deberían ir todas las imágenes subidas por los usuarios.
El código es este:
Código PHP:
<?php
if(!empty($_POST['phtsubmit'])){
$phtdescripcion = $_POST['phtdescripcion'];
$phtalbum = $_POST['phtalbum'];
$phtautor = $_COOKIE["nick"];
$phtfecha = traducir(date('l j \of F \of Y'));
$phthora2 = time()+21600;
$phthora = date("H:i:s",$phthora2);
$phtextension = $_FILES['phtfile']['type'];
if ($phtextension == "image/gif" || $phtextension == "image/jpeg" || $phtextension == "image/png") {
if (!empty($phtalbum) && $_FILES['phtfile']){
if (is_uploaded_file($_FILES['phtfile']['tmp_name'])){
// Guardo la imagen en una variable
$imagen = $_FILES['phtfile']['name'];
// Obtengo el nombre y la extensión de la imagen
$imagen1 = explode(".",$imagen);
// Guardo la imagen en otra variable con un nombre aleatorio de números y su extensión
$imagen2 = rand(0,9).rand(100,9999).rand(100,9999).".".$imagen1[1];
$imagen3 = explode(".", $imagen2);
// Guardamos la imagen en la carpeta imagenes con su respectivo nombre
$movepht = move_uploaded_file($_FILES['phtfile']['tmp_name'], "imagenes/".$imagen3[0].".".$imagen3[1]);
if($movepht == false){
echo "Ha fallado";
}else{
header("Location: admin.php?alb=$phtalbum");
// Creo una variable con la url de la foto
$phturl = "imagenes/".$imagen3[0].".".$imagen3[1];
// Le doy permisos a la foto por si hay que editarla/eliminarla.
chmod($phturl,0777);
// La insertamos en la base de datos para mostrarla más tarde
$pht_insert = mysql_query("insert into fotos(nombre_foto, url_foto, descripcion_foto, album_ID, pht_fecha, pht_autor, pht_hora)values('$imagen2', '$phturl', '$phtdescripcion', '$phtalbum', '$phtfecha', '$phtautor', '$phthora')", $conectar)or die(mysql_error());
}
}else{
echo "<p class=\"conboxtext\">La foto no se ha subido por un error desconocido. <a href=\"javascript:history.back(1)\">Haz click aquí para volver.</a></p>";
}
}else{
echo "<p class=\"conboxtext\">Rellena los campos obligatorios(Marcados con un *). <a href=\"javascript:history.back(1)\">Haz click aquí para volver.</a></p>";
}
}else{
// Si la imagen no tiene extensión jpeg, png o gif mostrará un mensaje de error.
echo "<p class=\"conboxtext\">La imagen debe estar en formato *.jpeg, *.gif o *.png. <a href=\"javascript:history.back(1)\">Haz click aquí para volver.</a></p>";
}
}else{
?>
Código PHP:
// Guardamos la imagen en la carpeta imagenes con su respectivo nombre
$movepht = move_uploaded_file($_FILES['phtfile']['tmp_name'], "imagenes/".$imagen3[0].".".$imagen3[1]);
if($movepht == false){
echo "Ha fallado";
}else{
header("Location: admin.php?alb=$phtalbum");
// Creo una variable con la url de la foto
$phturl = "imagenes/".$imagen3[0].".".$imagen3[1];
// Le doy permisos a la foto por si hay que editarla/eliminarla.
chmod($phturl,0777);
// La insertamos en la base de datos para mostrarla más tarde
$pht_insert = mysql_query("insert into fotos(nombre_foto, url_foto, descripcion_foto, album_ID, pht_fecha, pht_autor, pht_hora)values('$imagen2', '$phturl', '$phtdescripcion', '$phtalbum', '$phtfecha', '$phtautor', '$phthora')", $conectar)or die(mysql_error());
}
Código:
La línea 21 del código (Pongo el comentario para que os sea más facil ubicaros):Warning: move_uploaded_file(imagenes/464004138.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/a5455245/public_html/nwpht.php on line 21 Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpZI6bGV' to 'imagenes/464004138.jpg' in /home/a5455245/public_html/nwpht.php on line 21
Código:
Y eso es todo, espero que me podáis ayudar, yo seguiré mirando a ver si consigo solucionarlo, porque ya he probado de mil formas y nada. // Guardamos la imagen en la carpeta imagenes con su respectivo nombre $movepht = move_uploaded_file($_FILES['phtfile']['tmp_name'], "imagenes/".$imagen3[0].".".$imagen3[1]);