Upload un fichier sur le serveur NAS synology

Résolu/Fermé
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
- Modifié le 26 mars 2017 à 16:40
yg_be
Messages postés
19574
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 juillet 2022
- 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.

4 réponses

yg_be
Messages postés
19574
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 juillet 2022
1 131
26 mars 2017 à 16:49
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?
0
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
20
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....
0
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
20 > flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021

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
0
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
20
26 mars 2017 à 17:24
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
0
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
20
26 mars 2017 à 17:25
Voici un dossier de partage comme ils appel ça....
0
yg_be
Messages postés
19574
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 juillet 2022
1 131
Modifié le 26 mars 2017 à 17:33
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?
0
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
20
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...
0
yg_be
Messages postés
19574
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 juillet 2022
1 131
26 mars 2017 à 17:36
peut-être:
$upload_repertoire = $_SERVER['DOCUMENT_ROOT'].'/../uploads';
0
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
20
26 mars 2017 à 17:39
Je vais tester mais vu que sur le serveur wamp sa fonctionne je voie pas pourquoi je devrai modifier le code.
0
yg_be
Messages postés
19574
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 juillet 2022
1 131 > flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021

26 mars 2017 à 17:48
je te conseille, quand cela fonctionnera sur ton serveur NAS, de tester le code final sur ton serveur wamp.
0
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
20
26 mars 2017 à 17:40
Voici le message d'erreur:

Warning: move_uploaded_file(/volume2/web/volume1/uploads/8c024636ef8f6f0f2a6fdcac96d265c08c644598aee00046e23e83641abee0be.png): failed to open stream: No such file or directory in /volume2/web/sitebeta/admin/ajouter.php on line 47 Call Stack: 0.0320 137952 1. {main}() /volume2/web/sitebeta/admin/ajouter.php:0 0.1768 146976 2. move_uploaded_file() /volume2/web/sitebeta/admin/ajouter.php:47 Warning: move_uploaded_file(): Unable to move '/volume1/@tmp/phpJqM5Ed' to '/volume2/web/volume1/uploads/8c024636ef8f6f0f2a6fdcac96d265c08c644598aee00046e23e83641abee0be.png' in /volume2/web/sitebeta/admin/ajouter.php on line 47 Call Stack: 0.0320 137952 1. {main}() /volume2/web/sitebeta/admin/ajouter.php:0 0.1768 146976 2. move_uploaded_file() /volume2/web/sitebeta/admin/ajouter.php:47
0
yg_be
Messages postés
19574
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 juillet 2022
1 131 > flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021

26 mars 2017 à 17:44
on progresse,
$upload_repertoire = $_SERVER['DOCUMENT_ROOT'].'/uploads';
0
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
20
Modifié le 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.
0
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
20
30 mars 2017 à 12:44
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....
0