#1 Wed 03 March 2010 11:00
- yteb
- Participant occasionnel
- Date d'inscription: 25 Jun 2007
- Messages: 22
Import shape dans postgis par .bat
Bonjour à tous,
J'utilise habituellement des .bat pour importer mes shapes dans ma base postgresql/postgis. Je développe actuellement un outil en local dans lequel je dois importé des shapes. J'ai donc essayé de lancer mes batch depuis php mais ca ne fonctionne pas. Vu que je n'ai bientôt plus de cheveux à m'arracher je lance donc un grand HELP!
Voila les codes que j'utilise :
Mon .bat
Code:
title ma fenetre cd C:\Program Files\PostgreSQL\8.3\bin shp2pgsql -s 3947 C:\ms4w\Apache\htdocs\PREDIT_v1.0\sig\shp\import\entites_geographiques.shp entites_geographiques > C:\ms4w\Apache\htdocs\PREDIT_v1.0\sig\shp\import\entites_geographiques.sql psql -U postgres -d PREDIT -f C:\ms4w\Apache\htdocs\PREDIT_v1.0\sig\shp\import\entites_geographiques.sql
Mon script php
Code:
<?php exec('import_entites_geographiques_rgf93_zone_6.bat'); ?>
Personne n'aurait une petite idée?
Merci d'avance
Dernière modification par yteb (Wed 03 March 2010 11:11)
Hors ligne
#2 Wed 03 March 2010 11:20
Re: Import shape dans postgis par .bat
Bonjour,
Un message d'erreur dans les logs d'Apache ?
La doc explique :
Note: Lorsque le safe mode est activé, vous pouvez uniquement exécuter des programmes qui se situent dans le dossier défini par safe_mode_exec_dir.
Est ce que votre valeur est bien correct ?
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#3 Wed 03 March 2010 12:02
- yteb
- Participant occasionnel
- Date d'inscription: 25 Jun 2007
- Messages: 22
Re: Import shape dans postgis par .bat
Bonjour et merci pour le coup de main.
J'ai regardé dans le php.ini (chemin : C:\ms4w\Apache\cgi-bin\php.ini). Le safe mode est bien sur off...
Pour info, le batch fonctionne bien si je le lance manuellement et le problème persiste si je raccourcis le nom ou le chemin...
Hors ligne
#5 Wed 03 March 2010 14:22
- yteb
- Participant occasionnel
- Date d'inscription: 25 Jun 2007
- Messages: 22
Re: Import shape dans postgis par .bat
En fait je n'ai pas de message d'erreur. En fonction de ce que j'essaye, soit il affiche une page blanche (ce qui est normal car il n'y a rien d'autre que ca dans le script pour l'instant) mais l'integration dans la base postgres ne se fait pas, soit il met 5 minutes a charger la page et abandonne.
Voici comment je le lance cette fois avec le chemin complet
Code:
<?php exec('C:\\ms4w\\Apache\\htdocs\\PREDIT_v1.0\\sig\\batch\\import.bat'); ?>
Dernière modification par yteb (Wed 03 March 2010 14:23)
Hors ligne
#6 Wed 03 March 2010 15:16
Re: Import shape dans postgis par .bat
Bonjour,
que donne ceci :
Code:
exec('start /B "test" C:\\ms4w\\Apache\\htdocs\\PREDIT_v1.0\\sig\\batch\\import.bat');
J'ai vue des lignes de code où ils utilisaient cmd à la place de start.
Voir ceci : http://www.php.net/manual/en/function.shell-exec.php
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#7 Wed 03 March 2010 16:37
- yteb
- Participant occasionnel
- Date d'inscription: 25 Jun 2007
- Messages: 22
Re: Import shape dans postgis par .bat
J'ai essayé ce bout de code et tenté de bosser sur les liens que vous m'avez mis mais rien n'y fait...Je commence un peu à paniquer la car je suis deja a la bourre sur le projet et que je ne vois pas comment reussir a passer cette etape. J'ai pourtant l'impression que la solution doit etre toute simple...Personne n'a une idée du blocage? J'ai passé la journée dessus et je sais plus vraiment quoi faire...
Hors ligne
#8 Wed 03 March 2010 17:23
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: Import shape dans postgis par .bat
J'ai essayé ce bout de code et tenté de bosser sur les liens que vous m'avez mis mais rien n'y fait...Je commence un peu à paniquer la car je suis deja a la bourre sur le projet et que je ne vois pas comment reussir a passer cette etape. J'ai pourtant l'impression que la solution doit etre toute simple...Personne n'a une idée du blocage? J'ai passé la journée dessus et je sais plus vraiment quoi faire...
Salut,
Il faudrait pas executer une commande du style:
$output = exec("c:\\windows\\system32\\cmd.exe /c C:\\ms4w\\Apache\\htdocs\\PREDIT_v1.0\\sig\\batch\\import.bat");
plutot que le bat ?
(comme indiqué dans la doc php: http://php.net/manual/en/function.exec.php)
Exec doit executer une commande (cmd.exe dans ce cas). Le batch n'est qu'un parametre de cmd.exe
Nico
Hors ligne
#9 Thu 04 March 2010 10:16
Re: Import shape dans postgis par .bat
Est-ce que l'extension PHP_OGR de php ne peut pas faire la même chose, à savoir importer un SHP dans PG ?
J'utilise cette extension dans le sens inverse, pour faire des exports
PG > SHP et TAB ; ça serait dommage que ça ne le fasse dans le sens SHP
> PG. Je faisais des *.bat auparavant, mais j'ai abandonné car j'avais
les même pbmes pour les lancer depuis PHP.
David
Hors ligne
#10 Thu 04 March 2010 13:59
- yteb
- Participant occasionnel
- Date d'inscription: 25 Jun 2007
- Messages: 22
Re: Import shape dans postgis par .bat
Bon ca y est j'ai résolu le problème
En fait il fallait simplement gérer dans mon script une variable d'environnement contenant le mot de passe de la base. La commande bloquait en effet au niveau de l'import du fichier sql dans ma base.
Pour le script php :
Code:
<?php $mdp = mot de passe; putenv("PGPASSWORD=$mdp"); exec('C:\\ms4w\\Apache\\htdocs\\PREDIT_v1.0\\sig\\batch\\import.bat'); ?>
Pour le fichier .bat le classique :
Code:
@ECHO OFF REM import du shape dans la base cd C:\Program Files\PostgreSQL\8.3\bin shp2pgsql -s 3947 C:\ms4w\Apache\htdocs\PREDIT_v1.0\sig\shp\import\entites_geographiques.shp entites_geographiques > C:\ms4w\Apache\htdocs\PREDIT_v1.0\sig\shp\import\entites_geographiques.sql psql -U postgres PREDIT < C:\ms4w\Apache\htdocs\PREDIT_v1.0\sig\shp\import\entites_geographiques.sql :ALL_DONE
Merci beaucoup pour vos contributions. En espérant que ca aide quelqu'un d'autre !
Cordialement
Hors ligne