Upload un fichier sur le serveur NAS synology [Résolu]

flo39400 586 Messages postés mardi 8 avril 2008Date d'inscription 10 décembre 2017 Dernière intervention - 26 mars 2017 à 16:39 - Dernière réponse : yg_be 4149 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention
- 30 mars 2017 à 17:39
Bonjour,

Voila j'ai tester ce code via wamp 3.0.4, PHP version 7.0.4
Tous vas bien, mais sur mon NAS synolgy cela ne marche il me dit comme quoi j'ai pas la permission pourtant le dossier est en 777 niveau droit donc je comprend pas trop.

Voici le message d'erreur :
Warning: move_uploaded_file(../uploads/a6e63e62e09b98847da573b460c4942a65da71208c7498723358cf1d1ba36319.png): failed to open stream: Permission denied in /volume2/web/sitebeta/admin/ajouter.php on line 56 Call Stack: 0.0002 136304 1. {main}() /volume2/web/sitebeta/admin/ajouter.php:0 0.0021 145304 2. move_uploaded_file() /volume2/web/sitebeta/admin/ajouter.php:56 Warning: move_uploaded_file(): Unable to move '/volume1/@tmp/phplZtuYC' to '../uploads/a6e63e62e09b98847da573b460c4942a65da71208c7498723358cf1d1ba36319.png' in /volume2/web/sitebeta/admin/ajouter.php on line 56 Call Stack: 0.0002 136304 1. {main}() /volume2/web/sitebeta/admin/ajouter.php:0 0.0021 145304 2. move_uploaded_file() /volume2/web/sitebeta/admin/ajouter.php:56


Et voici le code:

<?php
session_start();
include ('../cobdd.php');
if(!empty($_SESSION['statut'] != 3))
{
 header('Location: ../index.php');
}
if(isset($_SESSION['id']) AND $_SESSION['id'] > 0)
{
 $id = $_SESSION['id'];
 if(isset($_POST['titre']))
 {
  $titre_article = $_POST['titre'];
  

  // Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur

  if (isset($_FILES['photo']) AND $_FILES['photo']['error'] == 0)

  {

    // Testons si le fichier n'est pas trop gros 10 Mo

    if ($_FILES['photo']['size'] <= 10000000)

    {


        // On peut valider le fichier et le stocker définitivement

         $fichier_upload_nom = $_FILES['photo']['name'];
         $fichier_upload_source = $_FILES['photo']['tmp_name'];
         $upload_repertoire = '../uploads';

         // On récupère l'extension du fichier
         $fichier_extension = pathinfo($fichier_upload_nom, PATHINFO_EXTENSION);

         // Exemple 1: on génère une chaîne aléatoire avec hash()
         $nouveau_nom = hash('sha256', (microtime().$fichier_upload_nom)).'.'.$fichier_extension;

         

         $fichier_upload_destination= $upload_repertoire.'/'.$nouveau_nom;

         // Upload du fichier dans son chemin de destination
         move_uploaded_file($fichier_upload_source, $fichier_upload_destination); 
         $dossier = 'uploads/';
         $url =$dossier.$nouveau_nom;
         $reqarticle = $bdd->prepare('INSERT INTO article(id_user, titre_article, nom_photo, date) VALUES(?, ?, ?, NOW())');
         $reqarticle->execute(array($id, $titre_article, $url));
         
    }

  }
 }
}

?>

<!doctype html>
<html lang="fr">
<head>
  <meta charset="utf-8">
  <title></title>
  <link rel="stylesheet" href="../style.css">
</head>
<body>
<?php include('../menu2.php'); ?>
</br>    
<br /><br />
<div align='center'>
<form method="post" enctype="multipart/form-data">

 <label for="titre">Titre de l'article (max. 50 caractères) :</label>
     <input type="text" name="titre" placeholder="Titre de l'article" id="titre" required /><br />
<br /><br />
     <input type="file" name="photo" id="photo" /><br />

     <label for="photo">Photo (tous formats | max. 10 Mo) :</label><br />

     <input type="hidden" name="MAX_FILE_SIZE" value="10048576" />
    
<br /><br />
  <input type="submit" name="envoi" value="Envoyer" />
 
</form>

</div>
</body>
</html>



Merci d'avance.

Afficher la suite 

17 réponses

Répondre au sujet
yg_be 4149 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention - 26 mars 2017 à 16:49
0
Utile
2
bonjour, "tout va bien", veux-tu dire que cela fonctionne à un autre endroit?
où souhaites-tu exactement sauver le fichier, es-tu certain que ../uploads corresponde à cet endroit?
flo39400 586 Messages postés mardi 8 avril 2008Date d'inscription 10 décembre 2017 Dernière intervention - 26 mars 2017 à 16:55
En serveur test ça fonctionne très bien la j'ai un problème de droit de dossier avec le NAS et vu que je mis connais pas du tous en linux je galère...
Ou la configuration du serveur je sais pas trop....
flo39400 586 Messages postés mardi 8 avril 2008Date d'inscription 10 décembre 2017 Dernière intervention > flo39400 586 Messages postés mardi 8 avril 2008Date d'inscription 10 décembre 2017 Dernière intervention - 26 mars 2017 à 16:56
Sinon je site a été totalement dupliquer en FTP les bases de données sont identique aussi les répertoires
Commenter la réponse de yg_be
flo39400 586 Messages postés mardi 8 avril 2008Date d'inscription 10 décembre 2017 Dernière intervention - 26 mars 2017 à 17:24
0
Utile
3
En changent juste mon dossier de destination j'ai moins long en erreur, mais toujours au moins un problème:

Warning: move_uploaded_file(): open_basedir restriction in effect. File(/volume1/uploads/1717e0dcb3d413c45bdfea5009e3a608ce19e58ca408871f01d23596b08950de.png) is not within the allowed path(s): (/volume2/web:/tmp:/var/services/tmp:/var/services/web:/var/services/homes) in /volume2/web/sitebeta/admin/ajouter.php on line 46 Call Stack: 0.0002 136304 1. {main}() /volume2/web/sitebeta/admin/ajouter.php:0 0.0021 145312 2. move_uploaded_file() /volume2/web/sitebeta/admin/ajouter.php:46
flo39400 586 Messages postés mardi 8 avril 2008Date d'inscription 10 décembre 2017 Dernière intervention - 26 mars 2017 à 17:25
Voici un dossier de partage comme ils appel ça....
yg_be 4149 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention - 26 mars 2017 à 17:29
tu n'as pas répondu à ma question "où souhaites-tu exactement sauver le fichier?".
peux-tu également décrire ce que tu as changé, et ce que tu as spécifié comme fichier de destination?
ton code php est dans le répertoire /volume2/web/sitebeta/admin
veux-tu vraiment sauver ton fichier dans /volume1/uploads?
flo39400 586 Messages postés mardi 8 avril 2008Date d'inscription 10 décembre 2017 Dernière intervention - 26 mars 2017 à 17:37
Normalement j'aimerai le sauvegarder dans /volume2/web/sitebeta/uploads, bon d'après moi j'aurai un problème avec le dossier temporaire.... mais peu être que cela est faux...
Commenter la réponse de flo39400
yg_be 4149 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention - 26 mars 2017 à 17:36
0
Utile
8
peut-être:
$upload_repertoire = $_SERVER['DOCUMENT_ROOT'].'/../uploads';
yg_be 4149 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention > flo39400 586 Messages postés mardi 8 avril 2008Date d'inscription 10 décembre 2017 Dernière intervention - 26 mars 2017 à 17:44
on progresse,
$upload_repertoire = $_SERVER['DOCUMENT_ROOT'].'/uploads';
flo39400 586 Messages postés mardi 8 avril 2008Date d'inscription 10 décembre 2017 Dernière intervention - 30 mars 2017 à 09:54
Voila après une petite modification sur le serveur php voila ou j'en suis: Warning: move_uploaded_file(/6b6f5385aace49bbbe414b1f6f7ddbd474d4b1345f5af0b48c3f4b3d98aa5846.PNG): failed to open stream: Permission denied in /volume2/web/sitebeta/admin/ajouter.php on line 47 Call Stack: 0.0002 135464 1. {main}() /volume2/web/sitebeta/admin/ajouter.php:0 0.0073 144456 2. move_uploaded_file() /volume2/web/sitebeta/admin/ajouter.php:47 Warning: move_uploaded_file(): Unable to move '/volume1/@tmp/phprh9izh' to '/6b6f5385aace49bbbe414b1f6f7ddbd474d4b1345f5af0b48c3f4b3d98aa5846.PNG' in /volume2/web/sitebeta/admin/ajouter.php on line 47 Call Stack: 0.0002 135464 1. {main}() /volume2/web/sitebeta/admin/ajouter.php:0 0.0073 144456 2. move_uploaded_file() /volume2/web/sitebeta/admin/ajouter.php:47

Voici le code :
 $upload_repertoire = ini_set('open_basedir', $_SERVER['DOCUMENT_ROOT'].'/volume2/web/sitebeta/upload');



merci d'avance de votre réponse.
yg_be 4149 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention > flo39400 586 Messages postés mardi 8 avril 2008Date d'inscription 10 décembre 2017 Dernière intervention - 30 mars 2017 à 17:19
je pense mieux soit
$upload_repertoire = $_SERVER['DOCUMENT_ROOT'].'/uploads';

soit
$upload_repertoire =  '/volume2/web/sitebeta/upload';
flo39400 586 Messages postés mardi 8 avril 2008Date d'inscription 10 décembre 2017 Dernière intervention - 30 mars 2017 à 17:39
déjà fait sais pire en message d'erreur....
yg_be 4149 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention > flo39400 586 Messages postés mardi 8 avril 2008Date d'inscription 10 décembre 2017 Dernière intervention - 30 mars 2017 à 17:39
puis-je les voir?
Commenter la réponse de yg_be
flo39400 586 Messages postés mardi 8 avril 2008Date d'inscription 10 décembre 2017 Dernière intervention - 30 mars 2017 à 12:44
0
Utile
A mon avis je doit changer les paramètres de droit du dossier tmp les passer en droit moins restrictive....

Mais je sais me connecter en SSH être en root mais je sais pas comment naviguer en SSH et changer les permissions des dossiers....
Commenter la réponse de flo39400