Signaler

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

Posez votre question flo39400 508Messages postés mardi 8 avril 2008Date d'inscription 23 juin 2017 Dernière intervention - Dernière réponse le 30 mars 2017 à 17:39 par yg_be
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 
Utile
+0
plus moins
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 508Messages postés mardi 8 avril 2008Date d'inscription 23 juin 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....
Répondre
flo39400 508Messages postés mardi 8 avril 2008Date d'inscription 23 juin 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
Répondre
Donnez votre avis
Utile
+0
plus moins
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 508Messages postés mardi 8 avril 2008Date d'inscription 23 juin 2017 Dernière intervention - 26 mars 2017 à 17:25
Voici un dossier de partage comme ils appel ça....
Répondre
yg_be 3128Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 20 août 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?
Répondre
flo39400 508Messages postés mardi 8 avril 2008Date d'inscription 23 juin 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...
Répondre
Donnez votre avis
Utile
+0
plus moins
peut-être:
$upload_repertoire = $_SERVER['DOCUMENT_ROOT'].'/../uploads';
yg_be 3128Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 20 août 2017 Dernière intervention - 26 mars 2017 à 17:44
on progresse,
$upload_repertoire = $_SERVER['DOCUMENT_ROOT'].'/uploads';
Répondre
flo39400 508Messages postés mardi 8 avril 2008Date d'inscription 23 juin 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.
Répondre
yg_be 3128Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 20 août 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';
Répondre
flo39400 508Messages postés mardi 8 avril 2008Date d'inscription 23 juin 2017 Dernière intervention - 30 mars 2017 à 17:39
déjà fait sais pire en message d'erreur....
Répondre
yg_be 3128Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 20 août 2017 Dernière intervention - 30 mars 2017 à 17:39
puis-je les voir?
Répondre
Donnez votre avis
Utile
+0
plus moins
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....
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !