Upload un fichier sur le serveur NAS synology

Résolu
flo39400 Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
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.

A voir également:

4 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 583
 
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   Statut Membre Dernière intervention   21
 
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   Statut Membre Dernière intervention   21 > flo39400 Messages postés 596 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   21
 
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   Statut Membre Dernière intervention   21
 
Voici un dossier de partage comme ils appel ça....
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 583
 
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   Statut Membre Dernière intervention   21
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 583
 
peut-être:
$upload_repertoire = $_SERVER['DOCUMENT_ROOT'].'/../uploads';
0
flo39400 Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   21
 
Je vais tester mais vu que sur le serveur wamp sa fonctionne je voie pas pourquoi je devrai modifier le code.
0
flo39400 Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   21
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 583 > flo39400 Messages postés 596 Date d'inscription   Statut Membre Dernière intervention  
 
on progresse,
$upload_repertoire = $_SERVER['DOCUMENT_ROOT'].'/uploads';
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 583 > flo39400 Messages postés 596 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   21
 
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   Statut Membre Dernière intervention   21
 
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