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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
executable_path/server/bin/executable_name -args..
==> Marche sans problème!

Si on l'éxecute d'un repertoire différent:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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. ;-)