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 :

Exécution code via CMD pour Postgres


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 40
    Points : 28
    Points
    28
    Par défaut Exécution code via CMD pour Postgres
    Bonjour @ tous.

    Je cherche à exécuter une restauration de fichier ".backup" (Résultat d'un pg_dump) en envoyant les informations via PHP/cmd.

    Un peu de code valant mieux qu'un long discours :

    1- Je récupère dans une variable php, ce qui me permettra de restaurer mon dump

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $cmd="cmd /c C:/Program Files/PostgreSQL/9.1/bin/pg_restore.exe -d ".$_POST['data2']." -i -h localhostr -p 5432 -U ********** D:/backup/voirie.backup";
    2- J'exécute ma variable

    Et là, ça ne fonctionne pas.

    A noter

    • Au lieu de exec() j'ai également testé avec system() et passthru()
    • J'ai également tenté de le faire créant un Batchfile que je lance ensuite sur le serveur mais là ça tourne en boucle
    • Le code généré dans la variable $cmd a été testé en "dur" dans la console de commande et elle fonctionne
    • Le Batchfile sur lequel j'ai fait des tests fonctionnait en "dur" sur le serveur
    • Pour d'autres codes sur ce même serveur j'ai lancé des codes pythons via du PHP et cela fonctionne avec un code du type system("cmd /c C:/Python35-32/python.exe D:/python/serprent.py");


    Je vous remercie par avance de vos débuts de réponses, bribes d'idées ou encore vos solutions qui me permettraient d'aller de l'avant.

    Geo-x

  2. #2
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    ça ne serait pas l'espace de Program Files qui pose problème ?

    Tu peux essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $cmd = 'cmd /c "C:/Program Files/PostgreSQL/9.1/bin/pg_restore.exe" -d '.$_POST['data2'].' -i -h localhostr -p 5432 -U ********** D:/backup/voirie.backup';
    edit :

    D’après : http://ss64.com/nt/cmd.html
    Il faudrait peut être même des doubles guillemets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $cmd = 'cmd /c ""C:/Program Files/PostgreSQL/9.1/bin/pg_restore.exe"" -d '.$_POST['data2'].' -i -h localhostr -p 5432 -U ********** D:/backup/voirie.backup';
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 40
    Points : 28
    Points
    28
    Par défaut
    Bonsoir et merci de ton aide.

    Il me semble avoir essayé dans mes tests les guillemets sans grand succès.

    En revanche, les doubles guillemets je test dès demain et je te fais un retour.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 40
    Points : 28
    Points
    28
    Par défaut
    J'ai testé en modifiant les guillemets, mais je n'ai pas mieux au niveau du résultat

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 40
    Points : 28
    Points
    28
    Par défaut
    Ce qui fonctionne également dans la console de commande c'est le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pg_restore -d provisoirea -i -h localhost -p 5432 -U postgres -w D:/backup/voirie.backup
    L'avantage c'est qu’il n'y a pas d'espace, le problème c'est que ça ne tourne pas non plus via PHP ou je le lance avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("cmd /c pg_restore -d provisoirea -i -h localhost -p 5432 -U postgres -w D:/backup/voirie.backup");

  6. #6
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    et si tu lance un truc simple comme :
    Je viens de tester cette commande et chez moi ça lance bien le bloc note windows.

    Évidement, le bloc note ne va se lancer que sur la machine qui héberge le serveur php (qui doit être une machine windows).
    Et pas sur le PC qui affiche la page (si ce n'est pas ce même PC qui héberge et fait tourner l'application PHP)

    Tu peux aussi essayer d'afficher ce que retourne ta commande, peut être qu'il y a une erreur ?
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/11/2011, 12h19
  2. Réponses: 1
    Dernier message: 28/02/2011, 09h20
  3. code en c# pour exécuter une commande dos en arrière plan
    Par GhostMoon dans le forum Windows Forms
    Réponses: 2
    Dernier message: 31/03/2010, 09h48
  4. Exécution de code via une URL
    Par PeteZah dans le forum Services Web
    Réponses: 9
    Dernier message: 30/05/2008, 13h56
  5. [Système] Exécution code php écrit via fwrite()
    Par Torpedox dans le forum Langage
    Réponses: 4
    Dernier message: 26/01/2007, 17h09

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