Bonjour,
J'essaye de m'envoyer par mail un fichier qu'un utilisateur m'aurait envoyé au préalable. Cependant, lorsque j'envoie par formuliare un fichier et que je l'enregistre dans un dossier avec les permissions 733, je n'arrive pas a envoyer le message : j'ai le message d'erreur :
Warning: file_get_contents() [function.file-get-contents]: open_basedir restriction in effect. File(/uploads/images.jpeg) is not within the allowed path(s): (/www) in /www/tobias/nouv/musique/partitions.php on line 80
Warning: file_get_contents(/uploads/images.jpeg) [function.file-get-contents]: failed to open stream: Operation not permitted in /www/tobias/nouv/musique/partitions.php on line 80
Comment faire pour que le fichier enregistré sur le serveur ai la même permission que son dossier (733) ?
Voici mon code pour envoyer le message :
$msg = '<h1>Demande de partition</h1><p><strong>Adresse mail de l\'expéditeur : </strong>';
$msg .= stripslashes(htmlspecialchars($_POST['mail']));
$msg .= '<br /><strong>Titre de la partition : </strong>';
$msg .= stripslashes(htmlspecialchars($_POST['titre']));
$msg .= '<br /><strong>Compositeur : </strong>';
$msg .= stripslashes(htmlspecialchars($_POST['compositeur']));
$msg .= '<br /><strong>Instruments : </strong>';
$msg .= implode(', ', $_POST["instrument"]);
$msg .= '<br /><strong>Autres instruments : </strong>';
$msg .= stripslashes(htmlspecialchars($_POST['autre']));
$msg .= '<br /><strong>Notes : </strong>';
$msg .= nl2br(stripslashes(htmlspecialchars($_POST['notes'])));
echo $msg;
// Enregistrer le fichier
if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0)
{
if ($_FILES['monfichier']['size'] <= 1000000)
{
$infosfichier = pathinfo($_FILES['monfichier']['name']);
$extension_upload = $infosfichier['extension'];
$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png', 'pdf');
if (in_array($extension_upload, $extensions_autorisees))
{
move_uploaded_file($_FILES['monfichier']['tmp_name'], 'uploads/' . basename($_FILES['monfichier']['name']));
echo "L'envoi a bien été effectué !";
}
else
{
echo "<br />Cette extension de fichier n\'est pas acceptée. Vous devez prendre un format image (jpg, gif, png) ou un fichier pdf.";
}
}
}
// ENVOYER UN MAIL
$frontiere = '-----=' . md5(uniqid(mt_rand()));
$headers ='From: "'.stripslashes(htmlspecialchars($_POST['mail'])).'"'."\n";
$headers .='Reply-To: '.stripslashes(htmlspecialchars($_POST['mail'])).''."\n";
$headers .= 'MIME-Version: 1.0'."\n";
$headers .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"';
$message = '--'.$frontiere.'--'."\n";
$message .= 'Content-Type: text/html; charset="iso-8859-1"'."\n";
$message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
$message .= $msg."\n\n";
$message .= '--'.$frontiere.'--'."\n";
//-----------------------------------------------
//PIECE JOINTE
//-----------------------------------------------
$message .= 'Content-Type: image/jpeg; name="fichier.jpg"'."\n";
$message .= 'Content-Transfer-Encoding: base64'."\n";
$message .= 'Content-Disposition:attachement; filename="fichier.jpg"'."\n\n";
$fichier = '/uploads/' . $_FILES['monfichier']['name'] . '';
$message .= chunk_split(base64_encode(file_get_contents($fichier)))."\n";
if(mail('mail...', 'Demande partition', $message, $headers))
{
echo 'Le message a été envoyé';
}
Voyez vous une erreur ? Comment faire pour que le fichier enregistré sur le serveur ai la même permission que son dossier (733) ?
Merci d'avance.
Configuration: Windows Vista
Firefox 3.0.9