Yo lo que no entiendo es de dónde recibes el idproducto porque del formulario no.
Si añades echo $producto; debajo de $producto=$_GET["idproducto"];
Dime si te muestra el idproducto y cual es la ruta que muestra getcwd para poder usar una ruta absoluta en el mkdir y descartar ese error.
Así:
Código PHP:
Ver original<?php if ((isset($_POST["enviado"])) && ($_POST["enviado"] == "form1")) { $producto=$_GET["idproducto"];
echo 'El idproducto es:' . $producto . '<br />'; // para saber si recibes los datos por get.
echo 'La ruta actual es:' . getcwd() . '<br />'; // para saber la ruta donde está el script.
$nombre_archivo = $_FILES['userfile']['name'];
mkdir("/img/aloja/$producto" , 0777); move_uploaded_file($_FILES['userfile']['tmp_name'], "img/aloja/$producto/".$nombre_archivo); ?>
<script>
opener.document.form1.path.value="<?php echo $nombre_archivo; ?>";
self.close();
</script>
<?php
}
else
{?>
<form action="gestionimagen.php" method="post" enctype="multipart/form-data" id="form1">
<p>
<input type="file" name="userfile" id="userfile" />
</p>
<p>
<input type="submit" name="button" id="button" value="Subir Imagen" />
</p>
<input type="hidden" name="enviado" value="form1" />
</form>
<?php }?>