Premetto che non sono molto esperto in php!
Devo effettuare un upload di immagini su server.
Ho creato il seguente codice:
questo è il form d'inserimento
codice:
<form action="upload.php" method="post" enctype="multipart/form-data">
<table border="0" cellspacing="2" cellpadding="0">
<tr>
<th scope="row"><div align="right">Seleziona Immagine</div></th>
<td><input name="image" type="file" /></td>
</tr>
<tr>
<td></td>
<td><input name="upload" type="submit" class="bottone" value="Carica immagine" /></td>
</tr>
</table>
</form>
questa è la pagina upload.php
codice:
<?php
include('../connessione.php');
$msg = "<h2>Immagine caricata nel server</h2>";
do {
if (is_uploaded_file($_FILES['image']['tmp_name'])) {
// Controllo che il file non superi i 18 KB
if ($_FILES['image']['size'] > 25000) {
$msg = "
Il file non deve superare i 24 kb</p>";
break;
}
// Ottengo le informazioni sull'immagine
list($width, $height, $type, $attr) = getimagesize($_FILES['image']['tmp_name']);
// Controllo che le dimensioni (in pixel) non superino 160x180
if (($width > 280) || ($height > 500)) {
$msg = "
Dimensioni non corrette</p>";
break;
}
echo $type;
// Controllo che il file sia in uno dei formati GIF, JPG o PNG
if (($type!=1) && ($type!=2) && ($type!=3)) {
$msg = "
Formato non corretto</p>";
break;
}
// Verifico che sul sul server non esista già un file con lo stesso nome
// In alternativa potrei dare io un nome che sia funzione della data e dell'ora
if (file_exists('upload_img/'.$_FILES['image']['name'])) {
$msg = "
File già esistente sul server. Rinominarlo e riprovare.</p>";
break;
}
// Sposto il file nella cartella da me desiderata
if(!move_uploaded_file($_FILES['image']['tmp_name'],'upload_img/'.$_FILES['image']['name'])){
$msg = "
Errore nel caricamento dell'immagine</p>";
break;
}
}
} while (false);
$sql="INSERT INTO immagini (nome) VALUES ('".$_FILES['image']['name']."')";
mysql_db_query($nomedb,$sql);
?>
Le operazioni in locale funzionano alla perfezione.
Ma in remoto NO! Ecco l'output steam:
Warning: getimagesize(): open_basedir restriction in effect. File(/var/tmp/phpv8R1xP) is not within the allowed path(s):
Warning: getimagesize(/var/tmp/phpv8R1xP): failed to open stream: Operation not permitted in
a questa linea di codice
codice:
list($width, $height, $type, $attr) = getimagesize($_FILES['image']['tmp_name']);
La mia ipotesi (sicuramente errata) è che l'interprete php sul server non abbia la funzione getimagesize. Eliminando dal codice il suo utilizzo funziona!
Potete darmi qualche dritta?
PS: la certella upload_img ha tutti i permessi rwxrwxrwx