[Système] Fonction exec(): Passer plusieurs commandes ?
Bonjour à tous.
Après 2-3 heures de recherches, j'en reviens a vous poser une question au sujet de la commande exec de PHP.
Voici la situation:
OS : Windows XP
But : Executer un programme dans un folder différent du working directory.
Solution ensagée : Spécifier le chemin absolu du répertoire
Ex:
Code:
cd ..\..\..\executable_path\executable_name -arg..
Problème : L'execution du programme ne fonctionne pas si on ne l'execute pas à partir du répertoire courant. La raison : ce dernier fait appel à deux fichiers de configurations présents dans deux repertoires.
Voici l'arborescence du programme
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
executable_path/
|
| file_config1
|
| -- server/
|
| | -- bin / executable_name
| |
| | -- config /
| |
| | file_config2 |
Si l'on execute le programme à partir du repertoire courant:
Code:
executable_path/server/bin/executable_name -args..
==> Marche sans problème!
Si on l'éxecute d'un repertoire différent:
Code:
dir1/dir2/executable_path/server/bin/executable_name -args..
==> Erreur, il ne trouve pas les fichiers de config
Fin du contexte.
Donc pour résoudre ce problème, je pense qu'il serait intéressant de se placer dans le répertoire ou se trouve l'exécutable (executable_path/server/bin/) puis de le lancer.
Sous Unix, cela n'aurais pas posé de problème. Mais sous Windows.. je ne trouve aucun moyen d'executer deux commandes avec la fonction exec!
J'ai tenté divers moyen permettant de représenter deux commandes distinctes (en banalisant les anti-slash bien sur):
Code:
1 2
| exec("cd ..\..\..\executable_path\server\bin \r\n exec_name -args");
exec("cd ..\..\..\executable_path\server\bin; exec_name -args"); |
Mais aucune ne marche (cela ne m'étonne pas vraiment).
Ma question est donc de savoir comment faire pour spécifier un CRLF qui correspond à un retour à la ligne. Ainsi je pourrais passer deux commandes dans la fonction exec :-).
Merci d'avance pour vos réponses, idées, etc. ;-)