Vous n'êtes pas identifié(e).
Pages : 1
Bonjiur,
J'aimerais savoir si quelqu'un a deja fait la prog-systeme en PHP et recupere les commandes comme createdb ou dropdb ou /etc/init.d/postgresql restart ou encore psql-l dans un programme pour etre afficher dans un navigateur par exemple.Merci
Hors ligne
Vraisemblablement. J'imagine que c'est comme ça que fonctionne PHPPgAdmin
Marc.
Hors ligne
ppa n'utilise pas directement createdb ou dropdb, il utilise les commandes SQL (CREATE DATABASE et DROP DATABASE).
Guillaume.
Hors ligne
Et il ne fait pas de pg_dump ?
Marc.
Hors ligne
Si, car cette commande n'a pas un équivalent simple SQL. Pareil pour pg_restore. D'ailleurs, pgAdmin le fait de la même façon.
Guillaume.
Hors ligne
D'où mon message
Dès qu'un programme propose la fonction d'export, c'est qu'il fait ce genre de manipulations
Marc.
Hors ligne
En fait j'ai fait un projet avec pgpool-II c'est a dire de pooling de connexions,de la replication et de la repartition des charges et j'ai suivi votre article sur dalibo.org et tout s'est passe bien et maintenant, je voudrai interagir tous ce que j'ai fait avec une page web PHP.C'est pour ca que j'ai poste ce message mais certainement pas phphpgadmin.
Merci
Hors ligne
Faudrait donner plus de détails, je ne vois pas trop ce qu'on pourrait vous dire sinon.
Guillaume.
Hors ligne
Je veux dire que je voudrais realiser des pages PHP qui possede des liens comme 'demarrer pgpool' et derriere il fait /opt/pgpool-II-2.2/bin./pgpool -n, 'utiliser la replication' et derriere il y a le programme qui va faire 'createdb -p 5432 baserepli', de la prgrammation systeme quoi?j'ai essaye avec les fonctions system(), exec(), shell_exec() mais je sai pas encore comment recuperer les resultats.
Merci
Hors ligne
system ne permet pas de récupérer le texte retourné par le programme, seulement son code retour.
Ce qui vous intéresse, c'est exec.
http://www.php.net/manual/fr/function.exec.php
La sortie ira dans le tableau «output», dont la référence est passée en paramètre.
Dernière modification par Marc Cousin (16/11/2010 15:39:44)
Marc.
Hors ligne
Oui, c'est dans ce document que j'ai essaye system(),exec() ou shell_exec() mais il n'affiche rien, seulle retval qui est un int qu'il retourne 1.avec shel_exec il retourne directement le resultat de la commande mais comme je vous le dit : 'ls', 'whoami','pwd' ces commandes de bases unix qui marche avec mais auand je fais /etc/init.d/postgresql start, normalement il doit repondre que postgres est deja lance mail dans mon navigateur, il affiche rien.Je sais pas si quelqu'un a deja essaye comme exec('createdb -p 5432 base',$output,$retval);
Hors ligne
Ça marche parfaitement avec exec… Ce code fonctionne.
<?php
exec('ls',$out);
foreach ($out as $ligne)
{
print "$ligne\n";
}
?>
Toutefois, c'est un forum PostgreSQL, pas PHP. Vous auriez certainement une aide plus appropriée sur un forum PHP.
Marc.
Hors ligne
oui, je vous ai dit que ca marche avec ls et tous les disons simple commande unix mais si je poste cette question sur un forum de postgres c'est que je voudrai faire de la progsys qui n'utilse comme commandes que des fonctions postgres comme createdb ou psql -l dans une fonction PHP et ca marche pas encore!
Hors ligne
Donc vous êtes en train de me dire que si vous mettez comme exécutable "ls", ça marche, mais pas avec "psql -l" ?
Si c'est le cas, vous avez un problème dans votre environnement (psql pas dans le path, par exemple)
Marc.
Hors ligne
Je sais pas mais j'ai deja essaie sur deux machines distinctes mais toujours le meme probleme.J'ai l'impression que peut-etre ces commandes la elles ont besoin qu'on soit root pour qu'il s'execute, j'en sais rien mais peut-etre quelquechose comme ca.ERn tout cas merci, je vai encore continuer a chercher.
Hors ligne
Non, ces deux commandes n'ont pas besoin d'être root.
Pour savoir pourquoi la commande échoue, essayez d'afficher $errno et $errstr, qui contiendront l'erreur système associée…
Marc.
Hors ligne
Il est possible que la commande demande la saisie d'un mot de passe pour la connexion au serveur de bases de données. Pensez à créer le fichier .pgpass dans ce cas (pour l'utilisateur apache, vu que c'est lui qui exécute le script et qui donc demande la connexion à la base de données).
Guillaume.
Hors ligne
Je crois pas parceque /etc/init.d/postgresql start n'a pas besoin de mot de passe et cette commande aussi si ca marche avec exec(), il doit afficher au navigateur que server deja demarre ou message du genre pid deja utilise mais quand je lance cela, il affiche rien.
Hors ligne
/etc/init.d/postgresql et psql sont deux commandes différentes et si l'une ne demande pas de mot de passe, l'autre peut très bien le faire.
Mais vu ton message, je ne crois pas que j'ai bien compris ton problème. Il serait intéressant que tu expliques réellement ton soucis.
Guillaume.
Hors ligne
Voila, je reexplique alors : j'ai configure pgpool-II pour faire de pooling de connexions ensuite de la replication et enfin la repartition des charges et ben tout cela ca marche tres bien, et maintenant je voudrais relier tous les config de pgpool-II a une application PHP qui va faire donc par exemple : un lien pour demarrer pgpool, un lien qui se sert pour demontrer l'utilisation de la replication et un lien qui va simuler la repartition des charges avec pgbench comme vous l'avez explique dans l'article. Et pour realiser l'application j'ai utilise le manuel de PHP et il explique qu'on peut recuperer les commandes shell dans des fonctions PHP comme en C telles que system(), exec(), shell_exec() et le manuel il fait comme exemple : <? $last_line=system('ls /home/',$retval);?>
et quand j'ai essaye ca marche comme il l'explique, de meme avec exec('whoami') et ca marche et apres j'ai essaye exec('/etc/init.d/postresql-8.3 start')et j'ai pense que ca va marche parceque je recupere une commade et quand je reactualise le navigateur,oups il affiche rien, normalement comme mon postgres demarre avec le systeme, il doit afficher une erreur du genre : server deja demarre ou pid deja utilise mais rien ne s'affiche, de meme avec exec('su postgres'), il retourne rien, avec system('psql -l ) ou exec('psql -l') il affiche toujours rien.et c'est a ce moment la que j'qi poste mon probleme ici.
Merci
Hors ligne
Pages : 1