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 :

exec ne fonctionne pas.


Sujet :

Langage PHP

  1. #1
    Membre actif
    Homme Profil pro
    électronicien
    Inscrit en
    Octobre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : électronicien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 225
    Points : 236
    Points
    236
    Par défaut exec ne fonctionne pas.
    Bonjour. Voici mon script pour le débutant que je suis:
    Je suis sous linux mageia 1.

    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
    25
    26
    27
    28
    29
    30
    31
    32
    if($bt_export=='export'){ 
        $sql= read_var('sql') ;
     
        $DBexport= mysql_query($sql);
        if(!$DBexport) $message= "Erreur mysql: ";
     
        $handle = fopen(EXPORT_CSV, 'w');
        if(!$handle) $message="le fichier ".EXPORT_CSV." n\'a pas été créé: ";
     
        $row    = mysql_fetch_assoc($DBexport);
        if(!$row) $message= "le fichier Mysql ne peut pas être lu ou est vide";
     
        fputcsv($handle, array_keys($row), ';');   // liste des titres de colonne
     
        do
        {
        	fputcsv($handle, $row, ';');            // on commence à remplir le tableau
        }
        while($row = mysql_fetch_assoc($DBexport));
        fputcsv($handle, $row, ';');                // on fini le remplissage du tableau
     
       // header('Content-Type: application/csv');
     
        fclose($handle);
     
        if(isset($message)) jsalert($message);
        else {   jsalert("fichier exporté ".EXPORT_CSV." avec succès.");
                 exec("start /usr/bin/libreoffice --calc ".EXPORT_CSV);
     
        }
     
    } //if($bt_export='export')
    Tout fonctionne sauf la ligne exec: J'ai essayé plein de solution mais cette commande semble être ignorée. J'ai trouvé plein d'exemple sur google, mais rien qui m'aide à trouver une solution.
    passthru() aussi ne fonctionne pas et c'est bien dommage...

    Je commence à donner ma langue au chat.... J'ai épuisé toutes les possibilités.
    A mon avis il doit y avoir une autre commande qui me bloque celle-ci.

    Merci de toute aide.
    Débusqueur de bug et chercheur en améliorations

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    apache n'ouvre de programme comme ça, en cli ok, mais pas en module

  3. #3
    Membre actif
    Homme Profil pro
    électronicien
    Inscrit en
    Octobre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : électronicien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 225
    Points : 236
    Points
    236
    Par défaut
    Merci de cette réponse ultra rapide.
    Est ce que Apache peut lancer un script bash qui lui même lancerait libreoffice ?
    Débusqueur de bug et chercheur en améliorations

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par LampeRouge Voir le message
    Merci de cette réponse ultra rapide.
    Est ce que Apache peut lancer un script bash qui lui même lancerait libreoffice ?
    non c'est pareil, quelle est le but de la manœuvre ?

  5. #5
    Membre actif
    Homme Profil pro
    électronicien
    Inscrit en
    Octobre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : électronicien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 225
    Points : 236
    Points
    236
    Par défaut
    Le but de la manœuvre est simple. J'exporte des données mysql dans un fichier .csv.( qui reste dans ma directory php) Ce dernier fermé, je veux l'ouvrir avec libreoffice pour l'enregistrer dans mon home et éventuellement le modifier .
    Débusqueur de bug et chercheur en améliorations

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    propose le fichier en téléchargement

  7. #7
    Membre actif
    Homme Profil pro
    électronicien
    Inscrit en
    Octobre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : électronicien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 225
    Points : 236
    Points
    236
    Par défaut
    Difficile de le transmettre et qu'il fonctionne. Ce fichier fait partie d'un tout. C'est une API php, mysql représentant une gestion commerciale de ma fabrication. N'étant pas un pro de la programmation, il se peut que tu me détestes.
    La page ou j'ai inséré ce code à pour rôle d'afficher une liste dans un FORM où est accroché un bouton "export".
    Débusqueur de bug et chercheur en améliorations

  8. #8
    Membre régulier Avatar de MTroy_
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 63
    Points : 83
    Points
    83
    Par défaut
    Ce dernier fermé, je veux l'ouvrir avec libreoffice pour l'enregistrer dans mon home et éventuellement le modifier .
    Ce que tu pourrais faire aussi (s'il s'agit d'un besoin personnel), c'est qu'une fois le CSV créée, afficher un petit lien vers ce dernier dans ta page, et configurer ton navigateur web de façon à ce qu'il l'ouvre avec libreoffice quand tu cliques. Ou plus simplement en forçant son téléchargement avec le bon header php.
    Plus rapide que webkit!
    Chuck Norris n'utilise pas de navigateur. Il lit le code source et imagine la page. Question de gain de temps...

  9. #9
    Membre actif
    Homme Profil pro
    électronicien
    Inscrit en
    Octobre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : électronicien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 225
    Points : 236
    Points
    236
    Par défaut
    Citation Envoyé par MTroy_ Voir le message
    Ou plus simplement en forçant son téléchargement avec le bon header php.
    Effectivement. Je ne connais pas le système des headers. J'ai une ligne "header" que j'ai mis en commentaire car ça m'ouvre ma page PHP et non le fichier que j'ai créé. Si je pouvais changer ça ce serait exactement la bonne formule.
    Débusqueur de bug et chercheur en améliorations

  10. #10
    Membre régulier Avatar de MTroy_
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 63
    Points : 83
    Points
    83
    Par défaut
    Dans ce cas essais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
       fclose($handle);
     
    $CSV_path = EXPORT_CSV;
    $CSV_name = array_shift(explode("/", $CSV_path));
     
    header('Content-Type: application/csv');
    header('Content-Disposition: attachment; filename='.$CSV_name);
    header('Pragma: no-cache');
    readfile($CSV_path);
    exit();
    Plus rapide que webkit!
    Chuck Norris n'utilise pas de navigateur. Il lit le code source et imagine la page. Question de gain de temps...

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par MTroy_ Voir le message
    Dans ce cas essais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
       fclose($handle);
     
    $CSV_path = EXPORT_CSV;
    $CSV_name = array_shift(explode("/", $CSV_path));
     
    header('Content-Type: application/csv');
    header('Content-Disposition: attachment; filename='.$CSV_name);
    header('Pragma: no-cache');
    readfile($CSV_path);
    exit();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $CSV_name = array_shift(explode("/", $CSV_path));
    basename ???

  12. #12
    Membre régulier Avatar de MTroy_
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 63
    Points : 83
    Points
    83
    Par défaut
    Je partais du principe que EXPORT_CSV contenait le chemin absolu.
    Mais ça marche aussi oui.
    Plus rapide que webkit!
    Chuck Norris n'utilise pas de navigateur. Il lit le code source et imagine la page. Question de gain de temps...

  13. #13
    Membre actif
    Homme Profil pro
    électronicien
    Inscrit en
    Octobre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : électronicien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 225
    Points : 236
    Points
    236
    Par défaut
    $CSV_path = ../export.csv
    $CSV_name =..

    Dans notre code ça ne fonctionne pas.
    J'ai donc remplacé les 2 variables par la constante.
    J'ai un effet surprenant.
    Le haut de mon code génère le fichier export.csv mais il n'est pas utilisé.

    Le résultat ne concerne pas ce nouveau fichier mais ma page actuelle qui prend le nom de .._export.csv est qui se trouve ouverte par libreoffice --calc.
    Je retrouve les liens, les boutons, le texte et mes données.
    Débusqueur de bug et chercheur en améliorations

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 135
    Points : 69
    Points
    69
    Par défaut
    De mon côté, je suis aussi intéressé par la fonction exec qui s'execute, me copie un repertoire, seulement après, je perds la main sur le navigateur qui mouline sans cesse.

    voici ma commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec('start essai.bat');
    si vous avez une idée.

  15. #15
    Membre actif
    Homme Profil pro
    électronicien
    Inscrit en
    Octobre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : électronicien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 225
    Points : 236
    Points
    236
    Par défaut
    Je pense que tu devrais plutôt utiliser la commande system() .
    Il y a beaucoup d'exemples sur google qui t'aidera.
    Débusqueur de bug et chercheur en améliorations

  16. #16
    Membre régulier Avatar de MTroy_
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 63
    Points : 83
    Points
    83
    Par défaut
    Ok, alors j'ai trouvé !
    Alors c'est simple, pour lancer une application graphique via wamp, il ne faut pas lancer apache en tant que service. Il faut démarrer le serveur à la main.
    Pour ce faire (je suis linuxien et je n'ai qu'un win7 de tests à porté de main, mais la manœuvre devrait fonctionner sur tout les windows):

    1- Il faut se rendre dans la liste des services via %SystemRoot%\system32\services.msc, trouver le service wampapache, et cocher la case dans ses propriétés (onglet connexion) : Autoriser le service à interagir avec le bureau. Et mettre le service en "Manuel"

    2 - Stopper wampServer (ou le killer)

    3 - ouvrir une invite de commande (Windows+R). Naviguer jusqu'au répertoire d'apache (à peut de chose près, selon les configs) wamp\bin\apache\Apache2.2.21\bin\ (2.2.21 chez moi)
    Et lancer le serveur : start httpd

    Un autre terminal va s'ouvrir, il ne faut pas le fermé !
    Voila, il ne reste plus qu'a exécuter le script.
    exec(), system(), com(), ça marche avec tout.
    Vous pouvez lancer n'importe quoi.

    important : opération à faire exclusivement en local, c'est un peu dangereux quand même hein.
    Plus rapide que webkit!
    Chuck Norris n'utilise pas de navigateur. Il lit le code source et imagine la page. Question de gain de temps...

Discussions similaires

  1. Fonction exec() ne fonctionne pas
    Par demenvil dans le forum Langage
    Réponses: 6
    Dernier message: 29/11/2014, 21h28
  2. [PHP 5.4] Commande exec() ne fonctionne pas
    Par cid5420 dans le forum Langage
    Réponses: 1
    Dernier message: 22/07/2014, 16h11
  3. php exec tar ne fonctionne pas
    Par snyfir dans le forum Linux
    Réponses: 12
    Dernier message: 20/11/2010, 21h38
  4. Réponses: 3
    Dernier message: 05/12/2007, 14h27
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

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