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

Signaler
Messages postés
593
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018
-
Messages postés
13096
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2020
-
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

Messages postés
13096
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2020
729
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?
Messages postés
593
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018
18
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....
Messages postés
593
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018
18 >
Messages postés
593
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018

Sinon je site a été totalement dupliquer en FTP les bases de données sont identique aussi les répertoires
Messages postés
593
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018
18
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
Messages postés
593
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018
18
Voici un dossier de partage comme ils appel ça....
Messages postés
13096
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2020
729
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?
Messages postés
593
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018
18
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...
Messages postés
13096
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2020
729
peut-être:
$upload_repertoire = $_SERVER['DOCUMENT_ROOT'].'/../uploads';
Messages postés
13096
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2020
729 >
Messages postés
593
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018

on progresse,
$upload_repertoire = $_SERVER['DOCUMENT_ROOT'].'/uploads';
Messages postés
593
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018
18
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.
Messages postés
13096
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2020
729 >
Messages postés
593
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018

je pense mieux soit
$upload_repertoire = $_SERVER['DOCUMENT_ROOT'].'/uploads';

soit
$upload_repertoire =  '/volume2/web/sitebeta/upload';
Messages postés
593
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018
18
déjà fait sais pire en message d'erreur....

--
Messages postés
13096
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2020
729 >
Messages postés
593
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018

puis-je les voir?
Messages postés
593
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018
18
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....