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 :

[Système] Utiliser pg_dump via php


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 67
    Par défaut [Système] Utiliser pg_dump via php
    Bonjour,

    j'ai fais une base de données postgresql et tout marche nikel. Le seul truc qui me manque c'est une système de sauvegarde/restauration.

    Pour postgresql il existe 2 commandes qui me vont tres bien : pg_dump pour sauvegarder et psql pour exécuté le fichier de sauvegarde (pour restaurer).

    seulement j'y arrive via une commande ms-dos mais pas sous php.

    sous dos :

    c:\program files\postgresql\8.2\bin\pg_dump -U admin -c -d -f D:\save_base\savegarde1.sql mabase


    Je n'arrive pas a le faire faire par clic sur un bouton automatiquement en php. Je sais que je dois utilisé la fonction EXEC mais j'y arrive pas.
    Mes tests :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?PHP
    $commande = 'start "c:\Program Files\PostgreSQL\8.2\bin\"pg_dump -U postgres -c -d -f D:\test\\'.$nom_save." ".$SQLDBName;
     
    exec($commande);
     
    // ou bien
     
    exec ('start' $commande);
    ?>
    Je pense que je n'écris pas correctement la commande mais je tourne en rond.

    Merci pour votre aide.

  2. #2
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    avant ton exec, affiche le contenu de $commande pour vérifier qu'il est bien formé (copie le dans ta console et vérifies que ca marche).
    parce que dans ton exemple $nom_base ne semble par exemple pas etre défini.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 67
    Par défaut
    les variables sont définis plus haut dans le code et un echo de celles-ci me donne ce que j'attend.

    Par contre je n'arrive pas a utiliser ma commande en dos.

    Pour le moment en manuel je vais dans le dossier ou se trouve pg_dump.exe à savoir : c:\program files\postgresql\8.2\bin\

    puis apres je fais : pg_dump -U admin -c -d -f D:\save_base\savegarde1.sql mabase


    cela marche tres bien. Mais si je copie cole ce que je fais un php j'ai un message comme quoi 'c:\Program' n'existe pas.


    Merci pour ton aide

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 67
    Par défaut
    je viens de modifier le path de XP pour qu'il prenne en compte directement le dossier BIN de postgresql.

    dans ms-dos si je tape directement : pg_dump -U admin -c -d -f D:\save_base\savegarde1.sql mabase
    cela marche tres bien.

    Par contre en php :

    exec('pg_dump -U admin -c -d -f D:\save_base\savegarde1.sql mabase'); ne fait rien du tout.

    et

    exec('start pg_dump -U admin -c -d -f D:\save_base\savegarde1.sql mabase'); me dit que pg_dump n'existe pas.

  5. #5
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    quand tu fais un phpinfo()
    tu vas voir la variable de safe_mode_exec_dir, est ce que tu as "no value" ou un dossier particulier?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 67
    Par défaut
    j'ai un "no value"

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 67
    Par défaut
    pfff j'ai trouvé une solution d'attente.

    avant de faire mon exec je vais me placer dans le dossier BIN de postgres et apres ca marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?PHP
    chdir("c:\Program files\PostgreSQL\8.2\bin");
    exec("pg_dump -U admin -c -d -f D:\save_base\savegarde1.sql mabase")
    <?

    Ce n'est pas génial mais bon ca marche.

    Merci pour ton aide.

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    J'ai fait les essais, et ces deux solutions semblent fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec('c:\"Program files"\PostgreSQL\8.2\bin\pg_dump -U admin -c -d -f D:\save_base\savegarde1.sql mabase');
    Et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec('c:\Progra~1\PostgreSQL\8.2\bin\pg_dump -U admin -c -d -f D:\save_base\savegarde1.sql mabase');
    /!\ Un certain nombre de caractères échappés sont interprétés dans une chaîne de type doubles quotes (\r, \n, ...) alors qu'ils ne le sont pas dans une délimitée par des simples quotes.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 67
    Par défaut
    ok merci bien à tous les 2

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

Discussions similaires

  1. [Système] Utilisation gnuplot avec php
    Par jejerome dans le forum Langage
    Réponses: 12
    Dernier message: 27/04/2013, 15h39
  2. [Système] Utiliser gpg en php
    Par Anonymus dans le forum Langage
    Réponses: 6
    Dernier message: 03/02/2010, 10h38
  3. [Système] Commande Linux via PHP
    Par musix77 dans le forum Langage
    Réponses: 1
    Dernier message: 31/07/2008, 12h57
  4. Réponses: 1
    Dernier message: 10/10/2006, 14h19

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