IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Upload et droits d'écriture [PHP 5.2]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Webdesigner
    Inscrit en
    Mars 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 64
    Par défaut Upload et droits d'écriture
    Bonjour,

    J'ai créé un système d'upload de fichiers CSV pour l'application sur laquelle je travaille actuellement. L'import et l'export fonctionnent parfaitement mais je rencontre cependant un petit souci.
    Lorsque j'exporte des données de mon application, un fichier CSV est créé et celui-ci est automatiquement enregistré dans un dossier "export". Je peux alors le lire et le modifier comme bon me semble. Il m'est ensuite possible d'importer un fichier CSV afin d'exécuter la procédure dans le sens inverse. Tout fonctionne, les insertions dans la base de données se font exactement comme je le souhaite et le fichier est placé dans un répertoire "import". Cependant, il m'est impossible de lire et modifier les fichiers placés dans ce dossier puisque je n'ai aucun droit dessus. L'application, quant à elle, parvient bien à lire ce fichier pour en extraire les données, mais il lui est impossible de le supprimer en fin de script.

    Les droits sur les dossiers "export" et "import" sont les mêmes et j'y ai accès en lecture comme en écriture. Ce sont les droits sur les fichiers enregistrés dans le dossier "import" qui ne sont pas suffisants et je ne parviens pas à comprendre pourquoi... Si vous pouvez m'éclairer, voici mon code :

    Script d'export :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    /* ****************************** */
    /* ** ECRITURE DANS LE FICHIER ** */
    /* ****************************** */
    $fileName = "export/EXPORT_".date('d-m-Y_His').".csv";
    if( $file = @fopen( "../../".$fileName, 'w' ) ) {
    	foreach ( $data as $row ) {
    		fputcsv( $file, $row );
    	}
    	fclose( $file );
     
    	// Insertion d'une entrée dans la table historique
    	$db->insertAction( 'EXP', $fileName );
    	// Si le nombre d'imports dans l'historique dépasse la limite, on supprime l'entrée la plus ancienne
    	$historySize = $db->getHistorySize('EXP');
    	if( $historySize > HISTORY_LIMIT ) {
    		$olderFile = $db->deleteOldHistory('EXP');
    		unlink( "../../".$olderFile );
    	}
     
    	echo $fileName;
    }
    else {
    	echo "Impossible d'ouvrir le fichier. Vérifiez que le fichier export_".date('d-m-Y').".csv n'est pas en cours d'exécution et réessayez de lancer l'export.";
    }
    Script d'import :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // Cas où un fichier est importé
    if( isset( $_FILES['csvFile'] ) ) {
    	// On affichera le message dans une boite de dialogue
    	echo "<div style=\"display: none;\" id=\"importResult\">";
     
    	// Vérification de l'extension et de la taille du fichier
    	$extension = strtolower( substr( strrchr( $_FILES['csvFile']['name'], '.'), 1 ) );
    	$maxSize = 1048576;
    	if( $extension == 'csv' && $_FILES['csvFile']['size'] <= $maxSize ) {
    		$newFile = "import/IMPORT_".date('d-m-Y_His').".csv";
    		// Déplacement du fichier téléchargé dans le dossier /export
    		if( move_uploaded_file( $_FILES['csvFile']['tmp_name'], $newFile ) ) {
     
    // Traitement du fichier et fin du code
    Merci beaucoup !

    PS : je précise que j'ai tenté la solution du chmod sans succès, ce qui n'a rien d'étonnant puisque je travaille dans une entreprise où nous ne sommes pas administrateurs de nos postes.

  2. #2
    Membre confirmé
    Homme Profil pro
    Webdesigner
    Inscrit en
    Mars 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 64
    Par défaut
    Bonjour,

    Je viens de trouver la solution à mon problème et à vrai dire, c'était assez simple. Il suffit de remplacer la fonction move_uploaded_file() par la fonction copy() qui fonctionne exactement de la même façon mais attribue les droits en lecture et en écriture à tous les autres utilisateurs. Si jamais ça peut aider quelqu'un d'autre...

    A bientôt !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Système] Droit d'écriture via script php
    Par winnie82 dans le forum Langage
    Réponses: 4
    Dernier message: 10/04/2006, 11h40
  2. [Apache] donner les droits d'écriture pour PHP
    Par Torpedox dans le forum Apache
    Réponses: 4
    Dernier message: 07/01/2006, 15h01
  3. Tester les droits en écriture sur une table en VBA ?
    Par yerome60 dans le forum Access
    Réponses: 2
    Dernier message: 19/12/2005, 21h43
  4. Réponses: 5
    Dernier message: 05/07/2005, 19h05
  5. droits en écriture sur le réseau
    Par julien20vt dans le forum MFC
    Réponses: 4
    Dernier message: 25/03/2004, 11h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo