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] lancement d'un exécutable


Sujet :

Langage PHP

  1. #1
    Membre averti
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Par défaut [Système] lancement d'un exécutable
    Bonjour à tous,

    je viens de débuter en php, j'ai une bdd postgresql/postgis

    j'arrive à effectuer des requêtes et les afficher en php mais je souhaiterai lancer un exécutable pour transformer les résultats d'une requête. Cet exécutable fonctionne correctement quand je le lance depuis la fenêtre dos

    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
    <?php
    // Connexion, sélection de la base de données
    	$dbconn = pg_connect("host=localhost port=5432 dbname=bd_spatiale user=[user] password=[mdp]")
        or die('Connexion impossible : ' . pg_last_error());
    // Exécution de la requête SQL
    	$query = "SELECT d2.* FROM datatest, d2 WHERE within(d2.the_geom, datatest.the_geom)";
    	$result = pg_query($query) or die('Échec requête : ' . pg_last_error());
    // Exportation en SHAPE
    	$pgsql2shp = "call \"c:\\program files\\postgresql\\8.2\\bin\\pgsql2shp.exe\"" ;
    	$shellcommand = $pgsql2shp."e:\data.shp bd_spatiale ".$query." -h localhost -u [user] -P [mdp]";
    	shell_exec ($shellcommand);
    // Affichage des résultats en HTML
    	echo "<table>\n";
    	while ($line = pg_fetch_array($result, null, PGSQL_ASSOC))
    	{
    		echo "\t<tr>\n";
    		foreach ($line as $col_value)
    		{
    			echo "\t\t<td>$col_value</td>\n";
    		}
    		echo "\t</tr>\n";
    	}
    	echo "</table>\n";
    // Libère le resultset
    	pg_free_result($result);
    // Ferme la connexion
    	pg_close($dbconn);
    ?>
    Je ne situe pas bien où est le prb dans l'exécution, merci d'avance pour vos réponses

    Bon week-end

    Benjamin

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    Bonjour,

    As tu safe_mode() à ON ou OFF ?

    shell_exec() ne fonctionne pas si safe_mode() est à ON

    Voir dans phpinfo();

  3. #3
    Membre chevronné Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 428
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $shellcommand = $pgsql2shp."e:\data.shp bd_spatiale ".$query." -h localhost -u [user] -P [mdp]";
    Double \ dans les chaines a double quotes.
    Je me demande aussi si ca ne pose pas de problème avec les crochets. PHP risque de les interpréter comme tableau.
    Sinon, utilise les simples quotes, d'autant plus que tu fais de la concaténation.

    Sohnic

  4. #4
    Membre averti
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Par défaut
    Merci pour vos réponses,

    oui j'ai vérifié dès le départ pour le safe mode, pour les crochets et le \ rien n'y fait

  5. #5
    Membre chevronné Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 428
    Par défaut
    Et si tu fais un echo de ton shell_exec et que tu le copies -colles dans une console dos, ca marche ?

    S.

  6. #6
    Membre averti
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Par défaut
    Il ne m'affiche rien, il passe directement à la suite du code, l'affichage du tableau de résultat. Je suppose que j'ai un probléme dans la façon dont j'ai écrit l'appel à la fonction, étrange...

    voici l'écran d'aide du fichier pgsql2shp :

    "RCSID: $Id: pgsql2shp.c 2513 2006-10-14 14:22:10Z mschaber $ RELEASE: 1.2.1
    USAGE: pgsql2shp [<options>] <database> [<schema>.]<table>
    pgsql2shp [<options>] <database> <query>

    OPTIONS:
    -f <filename> Use this option to specify the name of the file
    to create.
    -h <host> Allows you to specify connection to a database on a
    machine other than the default.
    -p <port> Allows you to specify a database port other than the default.
    -P <password> Connect to the database with the specified password.
    -u <user> Connect to the database as the specified user.
    -g <geometry_column> Specify the geometry column to be exported.
    -b Use a binary cursor.
    -r Raw mode. Do not assume table has been created by
    the loader. This would not unescape attribute names
    and will not skip the 'gid' attribute.
    -k Keep postgresql identifiers case.
    -? Display this help screen."

  7. #7
    Membre chevronné Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 428
    Par défaut
    Je crois qu'on s'est mal compris. Quel le resultat de
    echo $shellcommand
    (a la limite commente le code juste avant le shell_exec).

    S.

  8. #8
    Membre averti
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Par défaut
    désolé, la fatigue de la fin de semaine ; voici le code répondu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call 'C:\Program Files\PostgreSQL\8.2\bin\pgsql2shp.exe' E:\data.shp bd_spatialeSELECT data2.* FROM datatest, data2 WHERE within(data.the_geom, datatest.the_geom) -h [localhost] -u [user] -P [mdp]

    p.s. : les données entre crochets sont bonnes mais là je les ai changées

  9. #9
    Membre chevronné Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 428
    Par défaut
    Et si copies-colles dans une console dos, ca dit quoi ?
    Il ne manque pas un espace avant le SELECT ?

    S.

  10. #10
    Membre averti
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Par défaut
    l'espace je l'ai vu immédiatement, je l'ai corrigé ; sinon il m'indique : syntaxe du nom de fichier, de repertoire ou de volume incorrecte...

  11. #11
    Membre chevronné Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 428
    Par défaut
    Tant que tu n'auras pas la chaine qui marche deja en ligne de commande tu n'y arrives pas, mais la ca depasse mes competences. Je ne connais pas postgreSQL.... Mais avec MySQL, il me semble qu'il faut d'abord mettre les options et ensuite la requete.
    S.

  12. #12
    Membre averti
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Par défaut
    Merci quand même, je vais partir en week-end... Lundi

    si je tape cette commande manuellement en allant dans le répertoire bin, tout fonctionne correctement...

  13. #13
    Membre chevronné Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 428
    Par défaut
    Le call est indispensable ?

  14. #14
    Membre averti
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Par défaut
    la fonction "CALL" permet d'appeller une fonction depuis une autre dans dos

  15. #15
    Membre averti
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Par défaut
    Le soucis n'était pas dans le code php mais l'espace entre program et files...
    il faut mettre "program files" pour que cela marche
    voilà vive windows...

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

Discussions similaires

  1. [Système] Lancement d'un exécutable avec PHP
    Par fdu63 dans le forum Langage
    Réponses: 5
    Dernier message: 02/08/2006, 11h00
  2. Réponses: 18
    Dernier message: 15/02/2006, 14h51
  3. [Système] Lancement d'un exe
    Par MeDioN dans le forum API standards et tierces
    Réponses: 11
    Dernier message: 25/01/2006, 16h17
  4. [Système] fonction system et exécutable
    Par Luffy Duck dans le forum Langage
    Réponses: 5
    Dernier message: 03/01/2006, 18h49
  5. Lancement d'un exécutable
    Par devl83 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 21/10/2005, 12h31

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